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

当我用jQuery捕获提交表单事件时,是否有可能在一个关联数组中获得该表单的所有输入字段?


当前回答

我也遇到过同样的问题,只是用了不同的方法。

var arr = new Array();
$(':input').each(function() {
 arr.push($(this).val());
});
arr;

它返回所有输入字段的值。您可以将$(':input')更改为更具体。

其他回答

Serialize()是最好的方法。@ Christopher Parker说,Nickf的回答实现了更多,但它没有考虑到表单可能包含文本区域和选择菜单。最好使用serialize(),然后根据需要对其进行操作。serialize()中的数据可以在Ajax post或get中使用,因此没有任何问题。

这段代码可以工作 而不是名称,电子邮件输入您的表单字段的名称

$(document).ready(function(){
  $("#form_id").submit(function(event){
    event.preventDefault();
    var name = $("input[name='name']",this).val();
    var email = $("input[name='email']",this).val();
  });
});

我也遇到过同样的问题,只是用了不同的方法。

var arr = new Array();
$(':input').each(function() {
 arr.push($(this).val());
});
arr;

它返回所有输入字段的值。您可以将$(':input')更改为更具体。

联想?不是没有一些工作,但你可以使用通用选择器:

var items = new Array();

$('#form_id:input').each(function (el) {
    items[el.name] = el;
});

与nickf给出的解决方案相同,但考虑了数组输入名称 如

<输入类型=“文本”

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();
  }
});