2010-11-21 15 views
13

私はこのHTML持っている:JQueryでserializeArrayで作成された値にアクセスするにはどうすればよいですか?

<form id='myform'> 
<input name='title' value='foo'/> 
</form> 

をそして私はこのようなことから、オブジェクトの配列を作成:今、私はdataArrayに 'タイトル' をアクセスしないか

var dataArray = $("#myform").serializeArray(); 

を?これは動作しません:だから

alert(dataArray['title']); 
alert(dataArray['title'].val()); 

答えて

14
ニックが掲載されているものと同様に

が、少しクリーナー

var dataArray = $("#myform").serializeArray(), 
    dataObj = {}; 

$(dataArray).each(function(i, field){ 
    dataObj[field.name] = field.value; 
}); 

その後のdivに

alert(dataObj['title']); 
11
alert(dataArray[0].name); 
alert(dataArray[0].value); 

for (i=0; i<dataArray.length; i += 1) { 
    if (dataArray[i].name === "title") { 
     // do something here... 
    } 
} 
+0

ありがとうございます。複数の入力フィールドがあり、注文に頼りたくない場合はどうすればよいですか? – bart

+2

あなたは、名前がIDであり、値が値であるという順序に頼るつもりはありません。あなたが期待していたようなものではありません。配列に反復処理を施して、それらを処理する必要があります。 – Tom

2

実行console.log(dataArray);、プロパティインスペクタを開き、コンソールを確認してください。 Chromeでは、右クリックして[要素の検査]を選択し、左下の「> =」のアイコンをクリックします。左から2番目のアイコンです。

あなたは放火犯をインストールしたいと、それは、IEでの開発ツールで、おそらく何か利用できるかどう

わからない「コンソール」と呼ばれるタブ(プレスF12)がありますが、私は発展途上お勧めしませんFirefoxではIEで。

とにかく、これは、各アイテムの値をナビゲートして表示する方法でオブジェクトを一覧表示します。あなたは、値にアクセスする方法を解読するためにこれを使用することができますこの方法:)

幸運

23

次のいずれかのループas @Tom has、通過することができます...またはあなたが複数にアクセスしている場合は、もう少しなります効率的かつループに一度、このようなオブジェクトの作成:あなたが望むように、あなたは、たとえば、それをアクセスすることができます

var dataArray = $("#myform").serializeArray(), 
    len = dataArray.length, 
    dataObj = {}; 

for (i=0; i<len; i++) { 
    dataObj[dataArray[i].name] = dataArray[i].value; 
} 

を:

alert(dataObj['title']); //or alert(dataObj.title); 

You can test it out here

+1

非常に良い!!!これは非常にうまくPHPフォームのプロセッサにそれをプッシュ動作します! –

1

追記/エコー/印刷dataArray[0].name同じようにアクセスし、あなたに 'タイトル'

を与えます
1

myDivの入力のserializeArrayを警告します(注::inputセレクタにはselectタグとtextareaタグも含まれます):

//alert(fData.length) // how many inputs got picked up 
var fData=$("#myDiv :input").serializeArray(); 
var msg=""; 
for(var i=0;i<fData.length;i++){ 
    var raKy=Object.keys(fData[i]); 
    msg+="\n"+raKy[0]+":"+eval("fData[i]."+raKy[0])+" "+raKy[1]+":"+eval("fData[i]."+raKy[1]); 
} 
alert(msg); 
3

今後とも他人を助けるためにこれを追加してください。すべての値をすばやく調べるのに適しています。

var formdata = $("#myform").serializeArray(); 
var formdata = JSON.stringify(formdata); 
alert (formdata); 
関連する問題