$("[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