2012-02-21 19 views
7

フォームを送信するときに$(this).serialize()を使用しています。jQuery:フォームのシリアライズ、非表示フィールド、および表示されないフィールド

(何らかの理由で)私は(目に見える1、および1ないし、私はおよそ type="visible"が、 display:noneを話していないです)と同じ名前を持つ2つのフィールドを持っているとき、それは時代を除いて、うまく機能

...

しかし、もちろんserializeはこれを考慮していません。

私はこの

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

を試してみましたが、それは除いて、私の問題を解決している:隠されたセレクタ、適切な方法何も「隠された」=入力

を取りますか?

答えて

18

、あなたはそのコントロールの一部と一致し、その結果セットにそれを呼び出すことができます動作するようです。これにより、disabled属性の修正を避けることができます。

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

ありがとうございます、私のより良い解決策 –

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

は、この方法を試してみましたが、あなたが<form>自体にserialize()を呼び出す必要はありません

2

あなたは$ form.findを使用することができます(「::目に見える」)あなたがコントロールは、彼らはまた、実際にhiddenタイプを公開する場合にのみ、あなたは以下のセレクタを使用することができます:hiddenをマッチングたいので

。シリアライズ( )

関連する問題