2012-02-21 199 views
7

我在提交表單時使用$(this).serialize()jQuery:表單序列化,隱藏字段和不顯示字段

它運作良好,除了時候,我(因爲某些原因),有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',''); 

,這是解決我的問題,除了:隱藏的選擇,還需要鍵入=「隱藏」

什麼是正確的方法是什麼?

回答

18

你不必調用serialize()<form>本身,你可以配合一些控制措施,並呼籲它的結果集。這使您可以避免修改disabled屬性。

既然你要控制匹配:hidden,只有當他們實際上也暴露hidden類型,可以使用以下的選擇:

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

謝謝,比我的解決方案更好 – 2012-02-21 10:56:01

0
var $disabled_list = $(this).find('input:hidden,select:hidden,textarea:hidden').not('input[type=hidden]').attr('disabled', 'disabled'); 

試過這種方式,它似乎工作

2

您可以使用$ form.find(「:可見」)。連載( )