2009-04-18 40 views
3

送信後にdata()オブジェクトにフォームデータを簡単に保存する方法はありますか?data()オブジェクトにフォーム値を格納する方法は?

これは私のフォームであると仮定します

<form id='myform'> 
<input type='text' name='bar' value='lorem'/> 
<input type='text name='foo' value='ipsum'/> 
</form> 

後にデータを送信するには、次のように保存する必要があります。

$("#myform").data('bar','lorem'); 
$("#myform").data('foo','ipsum'); 
+0

私はちょうどこれのためのjQueryメソッドを見つけました:form.serialize()。私はいくつかの新しい情報で自分の投稿を更新しました。 – moff

答えて

3

あなたはこのような何かがあります。

$('#myform').submit(function(e) { 
    e.preventDefault(); // don't submit the form 
    var form = $(this); // store it for later reference 
    form.children('input').each(function() { 
     form.data($(this).attr('name'), $(this).attr('value')); 
    }); 
}); 

編集を:コードにエラーがありました(getChildren»childrenmyform»#myform) - これを修正しました。

このスクリプトはフォームを送信しないことに注意してください。 form.serialize():実際には、jQueryのは、すでにビルトインこの機能を持っている:あなたは更新 http://docs.jquery.com/Ajax/serialize

:)ことをやってsome nifty ajaxを追加することができます。有効なクエリ文字列を返します:

<form id="myForm"> 
    <input type="radio" value="A" name="foo" checked="checked" /> A<br /> 
    <input type="radio" value="B" name="foo" /> B 
    <input type="text" name="bar" value="Bla bla" /> 
</form> 
<script> 
var queryString = $('#myForm').serialize(); //foo=A&bar=Bla+bla 
</script> 
+1

これはselectとtextareaを扱っておらず、ボタン/イメージを介してフォームが送信されていない場合もあります。 また、状態/選択にも言及していません - それは言及されていませんでしたが、私はOPがすべての値ではなく*選択された*ラジオとチェックボックスの値を必要としていると推測しています - どちらの場合でも値はリストまたは配列ですか? –

+1

あなたは正しいですが、私はちょうど正しい方向(IMHO)でbartclaeysを指摘しました。私はすぐにコードを更新します。 – moff

+0

Thx Moff!それでもたくさんのコードが必要です(選択などを追加したい場合)。 SerializeToDataObjectのようなものがあると思っていました。 – bart

関連する問題