【问题标题】:jQuery: form serialize, hidden fields, and not displayed fieldsjQuery:表单序列化、隐藏字段和不显示字段
【发布时间】:2012-03-11 15:49:33
【问题描述】:

我在提交表单时使用$(this).serialize()

它运行良好,除非我(出于某种原因)有 2 个同名字段(一个可见,一个不可见,而且我不是在谈论 type="visible" 而是 display:none)...

当然serialize 不考虑这个...它只是把他们都拿走了。

我试过了

var $disabled_list = $(this).find('input:hidden,select:hidden,textarea:hidden').attr('disabled', 'disabled');
$(this).serialize();
$disabled_list.attr('disabled','');

它正在解决我的问题,除了 :hidden 选择器,还需要 type="hidden"

正确的方法是什么?

【问题讨论】:

    标签: jquery forms serialization hidden


    【解决方案1】:

    您不必在<form> 本身上调用serialize(),您可以匹配它的一些控件并在结果集上调用它。这样可以避免修改disabled 属性。

    由于您希望控件与 :hidden 匹配,但前提是它们实际上也公开了 hidden 类型,因此您可以使用以下选择器:

    $(this).find("input[type='hidden'], :input:not(:hidden)").serialize();
    

    【讨论】:

      【解决方案2】:

      你可以使用 $form.find(':visible').serialize()

      【讨论】:

        【解决方案3】:
        var $disabled_list = $(this).find('input:hidden,select:hidden,textarea:hidden').not('input[type=hidden]').attr('disabled', 'disabled');
        

        这个方法试过了,效果不错

        【讨论】:

          猜你喜欢
          • 2013-07-23
          • 1970-01-01
          • 2011-12-03
          • 1970-01-01
          • 1970-01-01
          • 2010-11-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多