2

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

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

4

3 回答 3

1

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

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

试试这个

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

$('[name="'+key+'"]', frm).val(value);
于 2013-08-06T23:06:18.520 回答
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/

于 2013-08-06T23:20:04.897 回答
1

元素的名称保留Name[]在 JavaScript 中,因此也保留在 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 演示

于 2013-08-06T23:21:41.903 回答