如何使用数值数组作为表单输入名称?

时间:2016-03-21 19:22:02

标签: javascript jquery html

查看了许多关于此的问题 - 并且找不到真正的答案。所以这里......

我有一个表单,我将动态添加部分(在本例中为#34;与会者信息"),因此我想使用firstName[0]firstName[1]等名称。我已经编写了代码来为每个部分添加一个新的数字索引。

...然而

当我尝试使用JQuery(或简单的JS)来读取任何表单字段的值(动态创建与否)时,我未定义。如果我将名称更改为firstName1firstName2等,则可以使用。只有当我使用数字数组索引时... nada。

我试过......

$('#firstName[' + indexNum + ']')val();
$('input[name=firstName[' + indexNum + ']]').val();

..以及其他一些事情。 (是的,ID与名称相同。)

我有什么遗失的吗?

3 个答案:

答案 0 :(得分:1)

请参阅Category:Attribute

  

选择器表达式中的属性值必须遵循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();
______________^___________________________^

希望这有帮助。

&#13;
&#13;
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;
&#13;
&#13;

答案 2 :(得分:0)

Jquery page中所示,&#34; [&#34;和&#34;]&#34;是特殊字符,必须进行转义才能用作元素的名称。

您应该使用:

$('#firstName\\[' + indexNum + '\\]')val();
$('input[name=firstName\\[' + indexNum + '\\]]'