我有一个带有大量文本输入的表单,如下所示:
<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/
答案 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更好。