如果我有一个文本输入并在HTML中设置了一个默认值,那么在jquery使用.val()
更改当前值之后,是否仍然可以访问原始值?
我的理解是jQuery应该更改value属性而不是value属性?
编辑:注意,我不是问如何存储默认值以便以后检索它(例如在数据或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
小提琴:
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/