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

JavaScript

西里神奇

2020-03-29

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

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

第3827篇《使用jQuery获取表单输入字段?》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

7个回答
泡芙JinJin 2020.03.29

尝试以下代码:

jQuery("#form").serializeArray().filter(obje => 
obje.value!='').map(aobj=>aobj.name+"="+aobj.value).join("&")
十三 2020.03.29

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

 $("#form").submit(function (e) { 
    e.preventDefault();
    input_values =  $(this).serializeArray();
  });
飞云 2020.03.29

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

卡卡西 2020.03.29

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

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

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

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

var input_name = "firstname";
var input = $("#form_id :input[name='"+input_name+"']"); 
米亚 2020.03.29

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

也有serializeArray函数。

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android