serializeArray未选择禁用的字段 [英] Disabled fields not picked up by serializeArray
问题描述
(问题已更新以反映实际问题)
我刚刚意识到,serializeArray
并不是从禁用字段中获取内容.
I just realized that serializeArray
is not fetching content from disabled fields.
通过从autosuggest
列表中选择一项来填充一组(街道)地址字段.完成此操作后,将禁用这些字段.我可以将其更改为read only
,但是我希望禁用外观,而不必更改CSS.
A set of (street) address fields are populated by selecting an item from a autosuggest
list. Once this is done, the fields are disabled. I could change this to read only
, but I want the disabled look and feel without having to change CSS.
是否有办法让serializeArray
从禁用字段中获取数据?
Is there a way to have serializeArray
grab data fro, the disabled fields?
解决方案
感谢穆罕默德,我创建了一个小插件,可以帮助我解决问题:
Thanks to Mohammad, I created a small plugin that helps me solve my issue:
(小提琴)
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);
您还可以尝试启用所有元素,仅对其进行序列化,然后在序列化之后将其禁用.
You can also try enabling all your element's just to serialize them and then disable them after serializing.
var myform = $('#form');
var disabled = myform.find(':input:disabled').removeAttr('disabled');
var serialized = myform.serializeArray();
disabled.attr('disabled','disabled');
这篇关于serializeArray未选择禁用的字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!