Jquery – ID的SerializeArray()

我有这个问题,我使用serializearray()jquery序列化Form到Json的所有字段。 如果在输入中我输入了name属性,它可以正常工作,但是如果我只想放置ID属性它不起作用。

名称的好function[名称类似:’#myformnameid’]:

function formToJson(nameForm) { var jsonForm={}; var queryFrom = $(nameForm).serializeArray(); for (i in queryFrom) { jsonForm[queryFrom[i].name] = queryFrom[i].value; } return jsonForm; } 

我尝试使用attr进行ID解决方案。

 function formToJson(nameForm) { var jsonForm={}; var queryFrom = $(nameForm).serializeArray(); for (i in queryFrom) { jsonForm[queryFrom[i].attr("id")] = queryFrom[i].value; } return jsonForm; } 

任何的想法?

serializeArray做的是获取表单输入对象并将它们转换为javascript对象数组。 从文档中 ,表单类似于

 [ { name: "a", value: "1" }, { name: "b", value: "2" }, { name: "c", value: "3" } ] 

您可以按名称或值迭代此数组,就像您正在做的那样,它将返回正确的数据。

你遇到的问题是你不再迭代实际的元素,只是来自这些元素的数据。 如果你想迭代元素,你需要做类似的事情:

 function formToJson(nameForm) { var jsonForm={}; $("input", $(nameForm)).each(function(index){ jsonForm[$(this).attr("id")] = this.value; }) return jsonForm; } 

这是一个老post,但我想我会添加我的想法。 从下面的链接复制源代码,您将能够向返回的数组添加任何您想要的元素属性。 这样你的实现就是jQuery的实现。 是的,如果更新了jQuery源代码,则需要手动更新代码,但这与其他解决方案相同。

https://searchcode.com/codesearch/view/25323764/

 var rbracket = /\[\]$/, rCRLF = /\r?\n/g, rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, rsubmittable = /^(?:input|select|textarea|keygen)/i, rcheckableType = /^(?:checkbox|radio)$/i; $.fn.extend({ customSerializeArray: function() { return this.map(function() { // Can add propHook for 'elements' to filter or add form elements var elements = $.prop(this, 'elements'); return elements ? $.makeArray(elements) : this; }) .filter(function() { var type = this.type; // Use .is(':disabled') so that fieldset[disabled] works return this.name && !$(this).is(':disabled') && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type) && (this.checked || !rcheckableType.test(type)); }) .map(function(i, elem) { var val = $(this).val(); if (val == null) { return null; } if ($.isArray(val)) { return $.map(val, function(val) { return { name: elem.name, value: val.replace(rCRLF, '\r\n') }; }); } return { name: elem.name, value: val.replace(rCRLF, '\r\n') }; }).get(); } });