0

我在将所有表单数组值获取到 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>
4

2 回答 2

3

document.getElementsByName不会以您尝试使用它的方式神奇地采用多个参数。您需要gEBN多次调用,每个名称一次(由另一个答案更详细地描述)。

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

var form = document.getElementsByName('form')[0];
var inputs = form.getElementsByTagName('input');
for (var i = 0, j = inputs.length; i < j; i++) {
    // snip
}
于 2012-07-10T20:56:03.940 回答
1

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

var listOfElements = ['p[]', 'k[]', 'ka[]', 's[]'];
for (var i=0; i<listOfElements.length; i++) {
   var el = document.getElementsByName(listOfElements[i]);
   ...
}
于 2012-07-10T21:00:45.477 回答