如何获得具有特定名称的所有输入?

时间:2013-04-10 22:17:25

标签: javascript jquery

我有一个带有大量文本输入的表单,如下所示:

<input type="text" name="option[]" value="option 1" onBlur="outputOptions()">
<input type="text" name="option[]" value="option 2" onBlur="outputOptions()">
<input type="text" name="option[]" value="option 3" onBlur="outputOptions()">

我希望能够获得所有输入的值,所以我尝试这样做:

function outputOptions()
{
    console.log("inside outputOptions");

        $("input[name=option]").each(
            function() {
                console.log("option value: " + $(this).value);
            }
        );
}

在我的网站上,结果是当我点击进出文本输入时,我看到“在outputOptions内部”,但没有打印出任何文本输入值。

我做错了什么?

JSFiddle:http://jsfiddle.net/6zguZ/2/

2 个答案:

答案 0 :(得分:5)

你得到的错误方法是:

    console.log("option value: "  + this.value);

如果真的想要使用jQuery,你可以这样做:

    console.log("option value: " + $(this).val());

但没有理由这样做。

您还需要使用实际名称进行选择:

 $('input[name="option[]"]').each(

对于没有匹配任何元素的jQuery选择,这不是一个错误,所以你没有得到类似的错误。

答案 1 :(得分:2)

试试这个Vanilla JS

var inputs = document.getElementsByName("option[]"), l = inputs.length, i;
for( i=0; i<l; i++) {
    console.log(inputs[i].value);
}

编辑:这是一个speed test来说明为什么这比jQuery更好。