查看了许多关于此的问题 - 并且找不到真正的答案。所以这里......
我有一个表单,我将动态添加部分(在本例中为#34;与会者信息"),因此我想使用firstName[0]
,firstName[1]
等名称。我已经编写了代码来为每个部分添加一个新的数字索引。
...然而
当我尝试使用JQuery(或简单的JS)来读取任何表单字段的值(动态创建与否)时,我未定义。如果我将名称更改为firstName1
,firstName2
等,则可以使用。只有当我使用数字数组索引时... nada。
我试过......
$('#firstName[' + indexNum + ']')val();
$('input[name=firstName[' + indexNum + ']]').val();
..以及其他一些事情。 (是的,ID与名称相同。)
我有什么遗失的吗?
答案 0 :(得分:1)
选择器表达式中的属性值必须遵循W3C的规则 CSS选择器;一般来说,这意味着valid identifier以外的任何内容都应该用引号括起来。
- 单引号内的双引号:
$('a[rel="nofollow self"]')
- 双引号内的单引号:
$("a[rel='nofollow self']")
- 单引号内的单引号转义:
$('a[rel=\'nofollowself\']')
- 双引号内的双引号转义:
$("a[rel=\"nofollow self\"]")
您选择的变体通常是风格或问题 便利性。
尝试用单引号'firstName[" + indexNum + "]'
var indexNum = 0;
console.log($("input[name='firstName[" + indexNum + "]']").val())
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<input name="firstName[0]" value="abc" />
或者使用两个反斜杠[
字符转义]
和\\
个字符
var indexNum = 0;
console.log($("input[name=firstName\\[" + indexNum + "\\]]").val())
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<input name="firstName[0]" value="abc" />
答案 1 :(得分:1)
您应该添加双引号:
$('input[name="firstName[' + indexNum + ']"]').val();
______________^___________________________^
希望这有帮助。
for(var i=0;i<3;i++){
alert($('input[name="firstName[' + i + ']"]').val());
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" name="firstName[0]" value="11"/>
<input type="text" name="firstName[1]" value="22"/>
<input type="text" name="firstName[2]" value="33"/>
&#13;
答案 2 :(得分:0)
如Jquery page中所示,&#34; [&#34;和&#34;]&#34;是特殊字符,必须进行转义才能用作元素的名称。
您应该使用:
$('#firstName\\[' + indexNum + '\\]')val();
$('input[name=firstName\\[' + indexNum + '\\]]'