我有一个带有许多输入字段的表单。
当我用jQuery捕获提交表单事件时,是否有可能在一个关联数组中获得该表单的所有输入字段?
我有一个带有许多输入字段的表单。
当我用jQuery捕获提交表单事件时,是否有可能在一个关联数组中获得该表单的所有输入字段?
当前回答
所有答案都很好,但如果函数中有一个字段你想忽略?简单,给字段一个属性,例如ignore_this:
<input type="text" name="some_name" ignore_this>
在你的Serialize函数中:
if(!$(name).prop('ignorar')){
do_your_thing;
}
这是忽略某些字段的方法。
其他回答
与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();
}
});
有时我发现一次一个更有用。为此,有这个:
var input_name = "firstname";
var input = $("#form_id :input[name='"+input_name+"']");
http://api.jquery.com/serializearray/
$('#form').on('submit', function() {
var data = $(this).serializeArray();
});
这也可以在没有jQuery的情况下使用XMLHttpRequest Level 2 FormData对象完成
http://www.w3.org/TR/2010/WD-XMLHttpRequest2-20100907/#the-formdata-interface
var data = new FormData([form])
试试下面的代码:
jQuery("#form").serializeArray().filter(obje =>
obje.value!='').map(aobj=>aobj.name+"="+aobj.value).join("&")
jquery。表单插件可能会帮助其他人在这个问题上寻找什么。我不确定它是否能直接满足你的要求。
还有serializeArray函数。