对于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]]
显然它不喜欢那里的括号?有没有办法以这种方式访问元素?
答案 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 强>