2013-08-06 96 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

@詹姆斯,没关系。我很感激你关心评论。 :) –