使用jQuery获取表单输入字段?

我有一个包含许多输入字段的表单。

当我使用jQuery捕获Submit form事件时,是否可以在关联数组中获取该表单的所有输入字段?

泡芙JinJin2020/03/29 19:03:49

尝试以下代码:

jQuery("#form").serializeArray().filter(obje => 
obje.value!='').map(aobj=>aobj.name+"="+aobj.value).join("&")
十三2020/03/29 19:03:48

我希望这是有帮助的,也是最简单的一种。

 $("#form").submit(function (e) { 
    e.preventDefault();
    input_values =  $(this).serializeArray();
  });
飞云2020/03/29 19:03:48

serialize()是最好的方法。@克里斯托弗·帕克(Christopher Parker)说,尼克(Nickf)的答案更胜一筹,但是并没有考虑到表格可能包含文本区域和选择菜单。最好使用serialize()然后根据需要进行操作。来自serialize()的数据可以在Ajax发布或get中使用,因此在那里没有问题。

卡卡西2020/03/29 19:03:48

nickf给定的解决方案相同,但考虑到数组输入名称,例如

<input type="text" name="array[]" />

values = {};
$("#something :input").each(function() {
  if (this.name.search(/\[\]/) > 0) //search for [] in name
  {
    if (typeof values[this.name] != "undefined") {
      values[this.name] = values[this.name].concat([$(this).val()])
    } else {
      values[this.name] = [$(this).val()];
    }
  } else {
    values[this.name] = $(this).val();
  }
});
阳光十三2020/03/29 19:03:48

不要忘记复选框和单选按钮-

var inputs = $("#myForm :input");
var obj = $.map(inputs, function(n, i) {
  var o = {};
  if (n.type == "radio" || n.type == "checkbox")
    o[n.id] = $(n).attr("checked");
  else
    o[n.id] = $(n).val();
  return o;
});
return obj
猪猪2020/03/29 19:03:48

有时我发现一次拿一个更有用。为此,这是:

var input_name = "firstname";
var input = $("#form_id :input[name='"+input_name+"']"); 
米亚2020/03/29 19:03:48

jquery.form插件可以帮助别人正在寻找结束了在这个问题上。我不确定它是否直接满足您的要求。

也有serializeArray函数。