原生 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使用
ParameterInfo.DefaultValue 和 ParameterInfo.RawDefaultValue 之间的区别