jQuery多个选择器与.val()
考虑:
$("[id^='txtYear_']").val();
为什么这只给了我在第一个输入框中输入的值,其中ID与“txtYear_”一起盯着? 我想获取ID为“txtYear_”的所有输入框的值。
$ .fn.val返回找到的元素集合中第一个元素的值。 如果你想要一个值数组,你可以简单地使用$ .fn.map + $ .fn.get :
var values = $("[id^='txtYear_']").map(function() { return this.value }).get()
注意: .get()
是必要的,因为$ .fn.map不返回数组,而是返回一个新的jQuery集合。
要检查所有值是否为空(不是""
),您可以在Array.prototype.every的帮助下执行以下操作:
var allFilled = values.every(function(value) { return value.trim() })
如果您不需要辅助values
数组,则可以更简单地执行此操作:
var allFilled = $("[id^='txtYear_']").get().every(function(el) { return el.value.trim() }) // => true/false
这就是val()的工作原理。 您必须循环遍历元素才能获取所有值:
let vals = $("[id^='txtYear_']").map(function() { return $(this).val(); }).get();
let vals = $("[id^='txtYear_']").map(function() { return $(this).val(); }).get(); console.log(vals);
为什么只有第一个输入?
请参见此链接: http : //api.jquery.com/val/
关于val()
方法的jQuery文档说:
Get the current value of the first element in the set of matched elements or set the value of every matched element.
如何获取所有输入元素的值
请注意,jQuery选择器始终返回一个对象,该对象包含数组属性中的匹配元素。 但你可以像这样直接通过[]
运算符访问所有匹配的元素
$("[id^='txtYear_']")[0]
$("[id^='txtYear_']")[1]
…
$("[id^='txtYear_']")[n]