Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery访问文本区域的默认值_Javascript_Jquery_Html - Fatal编程技术网

Javascript jQuery访问文本区域的默认值

Javascript jQuery访问文本区域的默认值,javascript,jquery,html,Javascript,Jquery,Html,如果我有一个文本输入,并且在HTML中设置了一个默认值,那么在jquery使用.val()更改当前值后,是否仍可以访问原始值 我的理解是jQuery应该更改value属性而不是value属性 编辑:注意,我不是问如何存储默认值以便以后检索(例如,在数据或变量中),我感兴趣的是为什么jQuery要修改输入字段的属性(以及反过来的默认值),而不仅仅是属性 对于此示例: <input id="me" type="hidden" value="starting value" /> <

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

我的理解是jQuery应该更改value属性而不是value属性

编辑:注意,我不是问如何存储默认值以便以后检索(例如,在数据或变量中),我感兴趣的是为什么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>
小提琴:

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
var$input=$(“”,{value:'original'});//使用jQuery构造函数创建输入:)
$input[0]。value=“foo”//更改此HTMLInputElement实例的value属性
console.log($input.val());//福
console.log($input.prop('value'));//福
console.log($input.attr('value'));//起初的
这样,您只需要更改HTMLInputElement值属性,而不是标记属性。
所以,我是说,这让代码有点混乱。

您可以在更改它之前将默认值保存为变量。我知道可以存储它,我想知道为什么jQuery会以这种方式运行,以及是否存在“jQuery”我不知道你的问题的答案,但我觉得它是有效的,并且表达得很好,而且似乎还没有得到回答,所以我给了你一张赞成票。希望您能从更熟悉jQuery的人那里得到答案。我认为这里已经回答了这个问题:特别是:当属性和属性都存在时,通常更新一个会更新另一个,但对于输入的某些属性,例如value和checked,情况并非如此:对于这些属性,属性(旧版本的IE除外)与输入的默认值/检查性(反映在defaultValue/defaultChecked属性中)相对应时,该属性始终表示当前状态。
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