2009-08-14 6 views
54

フォーム上でシリアル化を実行します。フォームのフィールドは非表示になっています。 jQueryで簡単にシリアル化する方法はありますか?それとも、自分の関数を書くべきですか?シリアライズには非表示のフィールドは含まれていません

+4

'serialize'は隠しフィールドを含むべきです。マークアップとスクリプトを見ることはできますか? – VoteyDisciple

+2

私が考えることができる唯一のフィールドは、フィールドを無効にすることです。 – Powerlord

+2

シリアライズには非表示フィールドは含まれますが、無効フィールドは含まれません。 ++はマークアップとスクリプトを見たいと思っています。 – 48klocs

答えて

103

Serializeがすべて含まれないがname属性でinput要素を有効。

+0

jqueryはid属性を使用するのではなく、フォームをシリアル化するためにname属性を使用するのはなぜですか? – frabiacca

+11

@frabiacca 'name'属性はPOSTデータの識別子なので、http://www.w3schools.com/tags/att_input_name.asp –

+0

私はstyle/css display:noneを持つcheckboxedに問題があります。彼らは拾われません。 –

2

2つを1つのセレクタで組み合わせると効果がありますか?

$(":input,:hidden").serialize(); 

編集:私はちょうど上記を試してみました。しかし、$( "form")。serialize();他の人が触れているように自動的にすべての入力を取ります。

+0

オブジェクトのキーとなるname属性がある場合にのみ実行されます。 –

1

ここでは、この問題の変わった変形があります。隠しフィールドには名前があります。

alert($("#myForm").serialize()) 

すべての非表示フィールドを含むウィンドウを正しくポップアップします。ただし、

$.post('myposts.php', $("#myForm").serialize(), function(data) { 
      $('#myResult').html(data); 
     }); 

非表示フィールドはありません。 PHPスクリプトはprint_r($_POST)隠しとチェックボックスが

+0

これはなぜ起こっているのか分かりましたか? – bytebender

+1

これは、あなたの入力がフォーム属性の外側にあるので(あなたの隠されたhtml)$( '#myForm'); ' –

0

をmisingされない場合、あなたは仕事にシリアル化機能のためのすべての要素に名前を追加する必要があり、適切

1

はちょうどこの問題に自分自身を走った、そしてソリューションをハッキング。

問題は、JQueryが非表示のhtml情報を取得する方法と関係があります。隠されたフィールドのTEXTを値として受け取らないので、value =プロパティを使用する必要があります。私もこの問題を抱え$(field).val(yourvalue);

-2

を使用jQueryの中でそれを設定するには

。習慣の中で、私は入力フィールドを/で閉じます。私はこのように閉じたときに隠れた入力が機能しないことを発見しました。

<input type="hidden" name="someName" value="someValue" /> 

は機能しません。

<input type="hidden" name="someName" value="someValue" > 

が機能します。

関連する問題