繁体   English   中英

如何获取具有多个 select 的表单数据,类似于 jquery val?

[英]How to get form data with multiple select, similar to jquery val?

我致力于解决 append 表单数据(输入,select,textarea)到 FormData。 我有多个 select 的问题。 Select 值应该类似于 jquery.val() - 如果选择了多个选项,则为数组。

  function getFormData(formid){
  var form = document.getElementById(formid);
  let formdata = {};
  Array.from(form.querySelectorAll('input, select, textarea'))
 .filter(element => element.name)
 .forEach(element => {
  formdata[element.name] = element.type === 'checkbox' ? element.checked : element === 'select' ? element.map(option.selected => option.value) : element.value;
  }); 
  return formdata;
  }

我将不胜感激。

这有效:

function getFormData(formid){
var form = document.getElementById(formid);
 let formdata = {};
 Array.from(form.querySelectorAll('input, select, textarea'))
.filter(element => element.name)
.forEach(element => {
 if(element.type === 'checkbox'){
formdata[element.name] = element.checked;
} else if(element.options) {
 var selected = [...element.selectedOptions].map(option => option.value);
 //var selected = [...element.options].filter(option => option.selected).map(option => option.value);
 if (selected.length>1){
 formdata[element.name] = selected;
 } else {
formdata[element.name] = element.value; 
 }          
} else {
formdata[element.name] = element.value; 
}
}); 
return formdata;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM