获取所有表单数组到JS数组

时间:2012-07-10 20:53:57

标签: javascript html arrays

我有问题将所有表单数组值都获取到JS数组,其中一个值正常工作:

          var el = document.getElementsByName('p[]');
          for (var i = 0, j = el.length; i < j; i++) {
          var elem = el[i];
          alert(elem.value);
          }

但是当我尝试添加更多它不起作用时:

var el = document.getElementsByName('p[]', 'k[]', 'ka[]', 's[]');
              for (var i = 0, j = el.length; i < j; i++) {
              var elem = el[i];
                      alert(elem.value);
                    $.post("test.php", { 'p': [elem.value] });
                      }

这是我的表单:表单是动态的(单击按钮我可以添加包含这4个字段的新行:

   <form name="form">
    <input type="text" name="p[]" id=name" />
    <input type="text" name="k[]" id="quant" size="3" />
    <input type="text" name="ka[]" id="price" size="10" />
    <input type="text" name="s[]" id="sum" size="10" disabled="disabled"/><br />
    </form>

2 个答案:

答案 0 :(得分:3)

document.getElementsByName并没有以您尝试使用它的方式神奇地采用多个参数。您需要多次致电gEBN,每个名称一次(another answer更详细地说明)。

或者,只需循环遍历<form>的输入:

var form = document.getElementsByName('form')[0];
var inputs = form.getElementsByTagName('input');
for (var i = 0, j = inputs.length; i < j; i++) {
    // snip
}

答案 1 :(得分:1)

方法get elementsByName接受一个字符串参数,所以你应该这样做:

var listOfElements = ['p[]', 'k[]', 'ka[]', 's[]'];
for (var i=0; i<listOfElements.length; i++) {
   var el = document.getElementsByName(listOfElements[i]);
   ...
}