【发布时间】:2015-09-01 18:41:00
【问题描述】:
基本上当在文本框上调用.attr("value") 时,它将返回其在标记中设置的值,而不是使用.val() 设置的值。
例如,
<input id="test" type="text" value="testing" />
Js:
$("#test").val("hello");
console.log($("#test").val()); //hello
console.log($("#test").attr('value')); //testing
但是在对隐藏元素执行相同操作时,结果却不同,如下所示,
HTML:
<input id="test1" type="hidden" value="testing" />
Js:
$("#test1").val("hello");
console.log($("#test1").val()); //hello
console.log($("#test1").attr('value')); //hello
DEMO
如果我们使用.val() 为该元素设置值,则会忽略 value 属性。任何人都知道为什么会这样?包含此行为详细信息的相关链接会更有帮助。
【问题讨论】:
-
有趣的是,
document.getElementById('test').defaultValue还记录(在演示中)"newVal"(jQuery 设置的字符串)。 @George:在 1.11.0、2.1.3 和 3.0.0-alpha1 版本中。 -
@GeorgeJempty 我刚刚测试了最新版本。你可以在我的演示中看到确切的版本。
-
一个有趣的发现! :( 这是一个错误吗?提供的链接似乎没有解决问题。jQuery 版本似乎无关紧要。问题是,为什么元素是否为
type="hidden"重要?jQuery 的.val( newVal )永远不要更改属性值! -
这不是 jQuery 特有的。这是使用原始 Javascript 的相同演示,结果相同:jsfiddle.net/barmar/S9mUL/1709
标签: javascript jquery html