javascript - jQuery访问文本区域的默认值

标签 javascript jquery html

如果我有文本输入并在 HTML 中设置了默认值,在 jquery 使用 .val() 更改当前值后是否仍然可以访问原始值?

据我了解,jQuery 应该更改值 property 而不是值 attribute

编辑:注意我不是在问我如何存储默认值以便以后检索它(例如在数据或 var 中)我感兴趣的是为什么 jQuery 正在修改 属性输入字段(以及默认值)而不仅仅是属性

对于这个例子:

<input id="me" type="hidden" value="starting value" />

<script>
var $field = $('#me');
console.log($field.val());
console.log($field.prop('defaultValue'));
console.log($field.val('new value'));
console.log($field.val());
console.log($field.prop('defaultValue'));
console.log($field.attr('value'));
console.log($field.prop('value'));
</script>

我们看到:

starting value
starting value
[input#me, context: document, selector: "#me", jquery: "2.1.0", constructor: function, toArray: function…]
new value
new value
new value
new value

fiddle :

http://jsfiddle.net/jLsqmxg7/1/

最佳答案

jQuery“val”setter 总是同时更改属性和属性。他们这样做是为了不让开发人员混淆模棱两可的行为。如果您真的只想更改属性并让具有相同值的标记属性执行此操作:

var $input = $("<input>", {value: 'original'}); // Using the jQuery constructor to create a input :)
$input[0].value = "foo"; // Changing the value property of this HTMLInputElement instance

console.log($input.val()); // foo
console.log($input.prop('value')); // foo
console.log($input.attr('value')); // original

有了这个,您只更改了 HTMLInputElement 值属性,而不是标签属性。 所以,我说过,这会使代码有点困惑。

关于javascript - jQuery访问文本区域的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26804663/

相关文章:

html - 高度可变的固定元素下方的静态元素

javascript - 选项卡的语义 UI 回调

javascript - 当我处于 td 级别时,如何从 xsl html 表格行中提取数据?

javascript - AngularJS 选择多个选项

jquery - 通过 php 跟踪访客的最佳工具是什么?

javascript - 聊天/论坛应用程序 : long polling or iframe?

php - 站点地图 xml 文件; url 是否必须以 ".htm"结尾?

javascript - 文本淡入淡出,jQuery 出现断断续续,相互取代

javascript - 查找 Javascript 对象长度

javascript - 我如何在 setTimeout 中保持很长时间?