serializeArray未选择禁用的字段 [英] Disabled fields not picked up by serializeArray

查看:145
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆