[英]Why jquery .val() function is not setting a real value?
我使用此函數來檢查屬性的存在:
var hasAttribute = function(el, attr) {
if ("hasAttribute" in el) {
return el.attributes[attr] != null;
}
else if ("outerHTML" in el) {
return (el.outerHTML
.replace(el.innerHTML, "")
.indexOf(" " + attr + "=") > -1);
}
};
問題是當我使用.val(x)
設置輸入值時,如果我使用.val()
卻可以獲取值,但是hasAttribute
函數無法檢測到它。 這個jsfiddle顯示了問題(我希望第一個警報說“輸入有一個值”,然后第二個顯示它,但是在Chrome中,至少第一個警報說“輸入需要一個值”)。
如何使.val(x)
正常工作? (或者如何使hasAttribute
檢測這些類型的值)
屬性和屬性是2個不同的實體。 屬性是用html元素內聯定義的。在加載時,瀏覽器讀取每個屬性並創建關聯的屬性。
稍后對此元素的任何更新將更新屬性,而不是屬性。
這個https://stackoverflow.com/a/5876747/297641答案詳細介紹了attr vs prop。
可能像下面這樣
if ($("input").prop("value")) {
alert("input has a value");
} else {
alert("input needs a value");
}
您現在實際上不需要此功能。 由於jQuery將在prop不存在時返回undefined
。
正如Felix所指出的,最好是只input.value
,如果它沒有任何值為""
話,那是虛假的。
使用.val
就像執行el.value = ...
。 這與在元素上設置value
屬性不同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.