jQuery:表单序列化,隐藏字段,而不是显示字段
我在提交表单时使用$(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','');
它正在解决我的问题,除了:隐藏选择器,也需要type =“hidden”
什么是正确的方法?
您不必在
本身上调用serialize()
,您可以匹配它的一些控件并在结果集上调用它。 这允许您避免修改disabled
属性。
由于您希望控件匹配:hidden
只有在实际公开hidden
类型时才hidden
,您可以使用以下选择器:
$(this).find("input[type='hidden'], :input:not(:hidden)").serialize();
你可以使用$ form.find(’:visible’)。serialize()
var $disabled_list = $(this).find('input:hidden,select:hidden,textarea:hidden').not('input[type=hidden]').attr('disabled', 'disabled');
尝试过这种方式似乎有效