$("[id^='txtYear_']").val();
这是为什么只给我的第一个输入框一个ID为“txtYear_”盯着输入的值?我想获得所有以“txtYear_”开头的输入框的值。
$("[id^='txtYear_']").val();
这是为什么只给我的第一个输入框一个ID为“txtYear_”盯着输入的值?我想获得所有以“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);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="txtYear_1" value="1">
<input id="txtYear_2" value="2">
<input id="txtYear_3" value="3">
<input id="txtYear_4" value="4">
<input id="txtYear_5" value="5">
<input id="txtYear_6" value="6">
<input id="txtYear_7" value="7">
还是要知道哪个是你可以使用的东西,一个对象:
let vals = {};
$("[id^='txtYear_']").each(function() {
vals[$(this).prop('id')] = $(this).val();
});
console.log(vals);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="txtYear_1" value="1">
<input id="txtYear_2" value="2">
<input id="txtYear_3" value="3">
<input id="txtYear_4" value="4">
<input id="txtYear_5" value="5">
<input id="txtYear_6" value="6">
<input id="txtYear_7" value="7">
为什么只有第一个输入?
看到这个链接:http://api.jquery.com/val/
jQuery的文件说,大约val()
方法:
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]
'$(“[id^='txtYear _']”)'会返回一组元素,如果您有多个元素匹配它。这意味着你将不得不遍历整个集合:) – Terry