如果我有文本输入并在 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 :
最佳答案
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/