serializeArray未捕获的禁用字段

(更新问题以反映实际问题)

我刚刚意识到serializeArray没有从禁用的字段中获取内容。

通过从autosuggest列表中选择项目来填充一组(街道)地址字段。 完成此操作后,将禁用这些字段。 我可以将其更改为read only ,但我希望禁用外观,而无需更改CSS。

有没有办法让serializeArray抓取数据,禁用字段?

感谢Mohammad,我创建了一个小插件来帮助我解决我的问题:

( 小提琴 )

  var form_data = $('form').serializeAll(); (function ($) { $.fn.serializeAll = function () { var data = $(this).serializeArray(); $(':disabled[name]', this).each(function () { data.push({ name: this.name, value: $(this).val() }); }); return data; } })(jQuery); 

试试这个

 var data = $('form').serializeAllArray(); 

这是使用的小插件

 (function ($) { $.fn.serializeAllArray = function () { var obj = {}; $('input',this).each(function () { obj[this.name] = $(this).val(); }); return $.param(obj); } })(jQuery); 

您也可以尝试启用所有元素来序列化它们,然后在序列化后禁用它们。

 var myform = $('#form'); var disabled = myform.find(':input:disabled').removeAttr('disabled'); var serialized = myform.serializeArray(); disabled.attr('disabled','disabled'); 

你可以使用readonly serializeArray()可以读取它。

 $('#field').removeAttr('disabled'); var formData = $(this).serializeArray(); $('#field').attr('disabled', 'disabled'); 

上面的解决方案更好 – 或者你可以从元素中删除disabled属性,序列化字段然后重新添加属性。