簡體   English   中英

為什么jquery .val()函數未設置實際值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM