繁体   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