原生 js defaultValue 和 jQuery prop(defaultValue) 之间有(应该有)区别吗?

Posted

技术标签:

【中文标题】原生 js defaultValue 和 jQuery prop(defaultValue) 之间有(应该有)区别吗?【英文标题】:Is there (should there be) any difference between native js defaultValue and jQuery prop(defaultValue)? 【发布时间】:2014-07-04 21:57:25 【问题描述】:

我对原生 javascript defaultValue 功能有点困惑。我明白了,html输入的值必须设置,那个值就是初始的默认值。

当我在点击事件中使用它时,我想将特定的输入(文本)元素恢复为其默认值。 (取消按钮)

//Restore values
var name_person = $(this).find('.nameOfPerson');       

//Attempt 1
name_person.val(name_person.defaultValue);
alert('restored value=' + name_person.val()); //This alerts nothing

//Attempt 2
name_person.val(name_person.prop('defaultValue')); //This alerts the default value
alert('restored value=' + name_person.val());

为什么原生 defaultValue 属性在 prop('defaultValue') 起作用时不起作用? 这些本质上不应该相同吗?初始值在输入元素中设置为 value="bla bla bla"。

我让它工作(使用 jQuery),但我只是想知道 - 我错过了什么吗?

【问题讨论】:

【参考方案1】:

它不起作用,因为name_person 是一个 jQuery 对象,而 jQuery 没有 defaultValue。你需要引用 DOM 对象

name_person[0].defaultValue

name_person.get(0).defaultValue

【讨论】:

好的。非常感谢!现在我明白为什么它不起作用了!【参考方案2】:

Default Value in jquery using attr not prop

只是尝试了解一些东西..sample html

<input type="text" name="usrname" value="default"><br>
<input type="submit" value="Submit">

JS

$("input[type=submit]").click(function()
$("input[type=text]").val(1);
    alert($("input[type=text]").prop("value"));  // it will return 1 
    alert($("input[type=text]").attr("value"));  // it will return default value


    alert($("input[type=text]")[0].defaultValue);  // @epascarello posted return default value



);

【讨论】:

奇怪的是 attr("value") 与 prop("value") 不一样。您也希望使用 attr("value") 获得当前值。

以上是关于原生 js defaultValue 和 jQuery prop(defaultValue) 之间有(应该有)区别吗?的主要内容,如果未能解决你的问题,请参考以下文章

夺命雷公狗-----React---18--value和defaultValue的区别

鼠标滚轮事件

react-hook-form 的 DefaultValues 未将值设置为 React JS 中的输入字段

React 之form表单selecttextareacheckbox使用

placeHolder和defaultValue的区别

ParameterInfo.DefaultValue 和 ParameterInfo.RawDefaultValue 之间的区别