2013-08-06 128 views
2

當談到JQuery時,我非常喜歡newb,這是因爲嘗試瞭解如何使用它。使用JQuery填充HTML輸入數組

我有一個表格定義中,我有一系列的類似下面的輸入:

<input name="Name[]"> 

我已經成功地建立了jQuery來克隆可變數目的這些和提交作品完美。當我將這個提交給PHP時,我得到了我期待的發佈數據。

["Name"]=> array(6) { [0]=> string(0) "" [1]=> string(0) "" [2]=> string(0) "" [3]=> string(0) "" [4]=> string(0) "" [5]=> string(0) "" } 

但是我遇到的問題是試圖用我的PHP返回的json數據填充這些表單元素。當我嘗試設置形式,這些元素的值用:

$('[name='+key+']', frm).val(value); 

其中(例如)key = Name[0]

我沒有多少運氣,並得到一個錯誤:

Uncaught Error: Syntax error, unrecognized expression: [name=Name[0]] 

顯然它不喜歡那裏的括號?有沒有辦法以這種方式訪問​​元素?

回答

0

就拿我的答案只有一個建議。
可以使用輸入的索引/位置eq函數來設置值

例如

$('[name="Name[]"]', frm).eq(key).val(value); 

$('[name="Name[]"]:eq('+key+')', frm).val(value); 

其中關鍵是的索引/位置輸入陣列(ie: 0, 1, 2, ....)
更多此處瞭解http://api.jquery.com/eq/

+0

謝謝你的反應是正是我需要的! – James

1

你需要轉義[]雙反斜槓//它的工作。

$('input[name="Name\\[0\\]"]') 

試試這個

key= key.replace(/\[/g, "\\\\["); 
key= key.replace(/\]/g, "\\\\]"); 

$('[name="'+key+'"]', frm).val(value); 
+0

我不能得到這個工作,但我感謝您抽出寶貴的時間來作出迴應:) – James

0

元素的名稱在JavaScript中保留Name[],因此也是jQuery。索引名稱僅適用於PHP。 jQuery將簡單地返回一個集合(就像名稱未使用[]一樣),每個jQuery對象都可以使用.eq()方法訪問。

<input name="Name[]" /> 
<input name="Name[]" /> 

var jsonResp = ["hello", "world"]; 

$.each(jsonResp, function(idx, val) { 
    $('[name = "Name[]"]').eq(idx).val(val); 
}); 

JSFiddle Demo

+0

謝謝!這導致我正是我需要的。 – James

+0

顯然我不能接受兩個答案......儘管他們都是發現......我不確定誰先回答...... – James

+0

@詹姆斯,沒關係。我很感激你關心評論。 :) –