jQuery:表单序列化,隐藏字段,而不是显示字段

DS_*_*per 9 forms jquery serialization hidden

我$(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','');
Run Code Online (Sandbox Code Playgroud)

它解决了我的问题,除了:隐藏的选择器,也取得了type ="hidden"

什么是正确的方法?

Fré*_*idi 22

你不必调用serialize()的<form>本身,你可以配合一些控制措施,并呼吁它的结果集.这样可以避免修改disabled属性.

由于:hidden只有在实际公开hidden类型时才需要控件匹配,因此可以使用以下选择器:

$(this).find("input[type='hidden'], :input:not(:hidden)").serialize();
Run Code Online (Sandbox Code Playgroud)