使用JQuery填充HTML输入数组

时间:2013-08-06 22:59:05

标签: php jquery html arrays

对于JQuery来说,我是一个新手,这是出于学习如何使用它而产生的。

我有一个定义的表单,其中有一系列输入,如下所示:

<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]] 

显然它不喜欢那里的括号?有没有办法以这种方式访问​​元素?

3 个答案:

答案 0 :(得分:1)

您需要使用双反斜杠// 来逃避 [] 才能生效。

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

试试这个

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

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

答案 1 :(得分:1)

只是把我的回答作为建议 您可以使用eq函数的输入索引/位置来设置值

示例

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

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

其中key是数组( ie: 0, 1, 2, .... )中输入的索引/位置 在这里阅读更多http://api.jquery.com/eq/

答案 2 :(得分:0)

元素的名称在JavaScript中保留Name[],因此也是jQuery。只有PHP需要索引名称。 jQuery只会返回一个集合(就像名称没有使用[]一样),并且可以使用.eq()方法访问每个jQuery对象。

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

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

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

<强> JSFiddle Demo