Javascript获取表单数组值

7

我有一个表格,设置了一个添加按钮,让用户可以一次提交多个人到网站。

一开始,表格有一个输入框以填写人名,如下示例:

<input type="text" name="name[]" value="Name" /> 

如果他们点击添加按钮,另一个将被添加,因此我最终得到以下内容。
<input type="text" name="name[]" value="Name" /> 
<input type="text" name="name[]" value="Name" /> 

当他们点击提交按钮时,我尝试在JavaScript中获取每个名称的值并循环遍历它们。我尝试过以下代码,但不起作用。

var inputs = document.getElementById('formIDhere').getElementsByTagName('name');
alert(inputs.length);

我从未收到警报,如果我只是像这样设置一个循环:
for(int i=0; i<inputs.length; i++)

什么都没有发生,希望能够帮助循环遍历javascript中name[]的值,非常感谢。


为什么不展示提交按钮的代码? - epascarello
FYI:getElementsByTagName(“name”)正在查找<name> </ name>。 - Duncan
8个回答

6
我想你可以试试以下方法:

我猜你可以尝试:

var inputs = document.querySelectorAll("#formIDHere input[name='name[]']");
alert(inputs.length);
for (i = 0; i < inputs.length; i++) {
    // your code here
}

4

简单方法:

var names=document.getElementsByName('name[]');

for(key=0; key < names.length; key++)  {
    alert(names[key].value);

    //your code goes here
}

3
[...document.querySelector("#FORMID").elements['name[]']].map(el=>el.value); 
// Returns ["name","name",...]

0

getElementsByTagName 返回一个数组,其中包含指定标签名称的元素。 在 HTML 中,没有标签名为 name 的元素。

name 是赋予 HTML 元素的属性。 要根据名称获取元素,可以使用

var ele=document.getElementsByName('whatevername');

ele 将包含指定名称的元素数组。然后,您可以使用循环迭代每个元素。


0

这就是表单元素的作用

var inputs = document.getElementById('formIDhere').elements["name[]"];
alert(inputs.length);
for (i = 0; i < inputs.length; i++) {
    // your code here
}

0

我认为你可以使用document.getElementById('formIDhere').elements.name

它将给你一个包含所有值的数组。


0
你的错误在于使用了getElementsByTagName,它要求一个名为<name>的标签,而你显然没有这个标签。尝试给输入框设置一个类,并使用jQuery $('className')来获取它,这样肯定会得到正确的结果。或者你仍然可以使用DOM document.getElementById('form').elements.name,但是这种方式可能不跨浏览器安全,除非经过仔细测试。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接