使用JQuery填充HTML输入数组


Populating HTML input array with JQuery

当谈到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]] 

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

我的回答只是一个建议
您可以使用带有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/

您需要用双反斜杠//转义[]才能使其工作。

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

试试这个

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

元素的名称在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演示