serializeArray未捕获的禁用字段

Ste*_*ven 18 jquery serialization

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

我刚刚意识到这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);
Run Code Online (Sandbox Code Playgroud)

Moh*_*dil 47

试试这个

var data = $('form').serializeAllArray();
Run Code Online (Sandbox Code Playgroud)

这是使用的小插件

(function ($) {
  $.fn.serializeAllArray = function () {
    var obj = {};

    $('input',this).each(function () { 
        obj[this.name] = $(this).val(); 
    });
    return $.param(obj);
  }
})(jQuery);
Run Code Online (Sandbox Code Playgroud)

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

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


小智 13

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

  • 不幸的是,“readonly”不适用于 <select> 字段,因此这只是输入和文本区域的一个选项。 (2认同)