我有一个包含许多输入字段的表单。
当我使用jQuery捕获Submit form事件时,是否可以在关联数组中获取该表单的所有输入字段?
我有一个包含许多输入字段的表单。
当我使用jQuery捕获Submit form事件时,是否可以在关联数组中获取该表单的所有输入字段?
我希望这是有帮助的,也是最简单的一种。
$("#form").submit(function (e) {
e.preventDefault();
input_values = $(this).serializeArray();
});
serialize()是最好的方法。@克里斯托弗·帕克(Christopher Parker)说,尼克(Nickf)的答案更胜一筹,但是并没有考虑到表格可能包含文本区域和选择菜单。最好使用serialize()然后根据需要进行操作。来自serialize()的数据可以在Ajax发布或get中使用,因此在那里没有问题。
与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();
}
});
不要忘记复选框和单选按钮-
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
有时我发现一次拿一个更有用。为此,这是:
var input_name = "firstname";
var input = $("#form_id :input[name='"+input_name+"']");
该jquery.form插件可以帮助别人正在寻找结束了在这个问题上。我不确定它是否直接满足您的要求。
也有serializeArray函数。
尝试以下代码: