2010-11-21 51 views
13

我有這樣的HTML:如何訪問jQuery中由serializeArray創建的值?

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

我從它創建一個這樣的對象數組:

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

現在我該怎樣在DataArray中訪問 '標題'?這不起作用:

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

回答

14

類似於尼克發佈,但乾淨了一點

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

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

然後訪問相同的方式

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 2010-11-21 06:54:46

+2

你不是依靠命令名稱是id,值是值,它們只是不在你期待的對象中,你需要迭代數組並在遇到它時處理它們。 – Tom 2010-11-21 07:00:31

2

運行console.log(dataArray);,然後打開屬性檢查,並檢查控制檯。在Chrome中,您需要點擊鼠標右鍵並選擇「檢查元素」,然後點擊左下角的「> =」外觀圖標,這是左側第二個圖標。

在Firefox中你會安裝螢火,有一個叫「控制檯」

不知道這是否可以在IE瀏覽器,可能是一些在開發工具選項卡(按F12),但我不會推薦發展在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表單處理器! – 2013-02-08 06:41:58

1

附加/回聲/打印dataArray[0].name到一個div會給你 '標題'

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); 
相關問題