2013-04-24 54 views
0

文本輸入具有數組樣式的名稱(name =「post [2] [id]」)。我需要用這個結構名稱在jQuery腳本中獲取這個值。這樣我可以像普通數組一樣工作。與jquery從名稱結構的輸入中獲取值

$(document).ready(function(){ 
    var data = {}; 
    data['post'] = {}; 

    var fields = $("#user input"); 

    $.each(fields, function(index, field) { 
     data[$(field).attr('name')] = $(field).val(); 
    }); 

    console.log(data); 
}); 


<div id="user"> 
    <input type="text" name="name" value="Joy" /> 
    <input type="text" name="post[1][id]" value="2" /> 
    <input type="text" name="post[1][name]" value="test" /> 
    <input type="text" name="post[2][id]" value="3" /> 
    <input type="text" name="post[2][name]" value="test 2" /> 
</div> 

現在我的名字在數據變量中加入了類似字符串,所以這非常糟糕。 我需要這樣的:

alert(data.post.1.id) // 2 
+0

不知道你在尋求什麼幫助... – adamb 2013-04-24 17:27:48

回答

2

簡短的回答:

不延長jQuery的選擇,你可以使用jQuery的contains選擇的:http://api.jquery.com/attribute-contains-selector/

喜歡這個

$('input[name*="["][name*="]"]')

翻譯它英文,意思是,給我th Ëinput s其中名稱中包含[]


龍答:

簡短的回答應該務實是足夠的。

但FYI ...

重複的使用[name...]是因爲一個缺點,我們不能用在這樣的選擇通配符。

另一個缺點是他們沒有定義嚴格的發生順序。例如。 post]1[的名字也將被匹配。

如果您確實需要確保名稱具有正確的字符串模式,您可以擴展jQuery的選擇器以執行更嚴格的選擇規則的正則表達式操作。

下面是一個很好的:http://james.padolsey.com/javascript/regex-selector-for-jquery/