当谈到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演示