获取表单对象中动态输入元素的值

时间:2014-02-14 18:41:39

标签: javascript

我的问题是:如何在表单中引用输入元素的动态“名称”?

例如,使用以下HTML:

<form>
    <input type="text" name="qty1" value="input1" />
     <input type="text" name="qty2" value="input2" />
     <input type="text" name="qty3" value="input3" />

    <input type="submit" value="Submit" onClick="checkVal(this.form); return false;" />
</form>

Javascript:

function checkVal(form) {
    for (var i = 1; i <= 3; i++) {
        alert(form.qty+i.value);  // Here's where my problem is..
    }
}

上面的javascript不起作用。警报输出NaN

如何使用qty1变量在for循环中引用qty2qty3i

这是一个jsfiddle:http://jsfiddle.net/MRzWf/

5 个答案:

答案 0 :(得分:7)

使用Bracket notation

 form["qty" + i].value

DEMO

答案 1 :(得分:3)

只需以字典登录

http://jsfiddle.net/MRzWf/2/

 alert(form["qty"+i].value);

答案 2 :(得分:1)

  

标准解决方案

使用:form.elements[]应该可以在所有浏览器中使用..

function checkVal(form) {
    for (var i = 1; i <= 3; i++) {
        alert(form.elements["qty"+i].value);

        /* OR using dynamic name variable
        var ename = "qty"+i;
        alert(form.elements[ename].value);
        */
    }
}

答案 3 :(得分:0)

问题是form.qty+i

要访问数组元素,您应该在括号内使用index

还有另一种检查输入值的方法。这是一个。

  function checkVal(form) {
    var allInputs = document.getElementsByTagName('input');
    for (var i = 0; i < 3; i++) {
          if(allInputs[i].type == 'text'){
                alert(allInputs[i].value);  
          }
    }
}

DEMO

答案 4 :(得分:0)

试试这个。它适用于上述问题

function checkVal(form) {
for (var i = 0; i < 3; i++) {
    alert(document.getElementsByTagName("input")[i].value);
}  }