当前位置:   article > 正文

jQuery中val()和attr()修改input标签的value值的发现_attr value没有发生改变

attr value没有发生改变

实现功能:鼠标点击 input 框(获得焦点)时,清空 input 框里的信息 ,鼠标点击 input 框外区域(失去焦点)时,如果 input 框为空,继续显示提示信息。

使用val()方法修改input标签的value值:

/*鼠标点击输入框,将输入框中提示的字符串改为空白*/
$(".search").focus(function () {
    $(this).val("");
}).blur(function () {
    if ($("input").val("value") == "") {
        $(this).attr({"value": "请输入要查询的问题"});
    };
});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

点击 input 框触发事件
val() 无法更改 HTML 代码里 input 标签里的 value 值,但是页面有修改的效果!

在这里插入图片描述

使用attr()方法修改input标签的value值:

$(".search").focus(function () {
    $(this).attr({"value": ""});
}).blur(function () {
    if ($("input").attr("value") == "") {
        $(this).attr({"value": "请输入要查询的问题"});
    }
});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

点击 input 框触发事件
attr()更改了HTML代码里input标签里的value值,而且页面有修改的效果**
在这里插入图片描述
为什么使用 val() 无法改变 input 标签的 value 属性呢?

引用其他的结论:
①value 是定义输入字段的初始(默认)值。
②.val(‘’) 能够取到 针对text,hidden可输入的文本框的value值。
而 .attr(‘value’) 可以取到html元素中所设置的属性 value 的值,不能获取动态的如input type=“text” 的文本框手动输入的值。
③.val()设置的是input的value属性,input是HTMLInputElement的实例,value 是通过setter方法定义的,当被赋值时,就会把值写到input里面;而改变value属性的方法,实际上操作的是dom的value属性,会触发浏览器的repaint,更新input的值。

使用.val(“参数”) 改变 input 输入框的值,不能修改 value 属性的值,想要直接操作 dom 的 value 属性,建议使用 attr()。

ps.以上为个人理解,欢迎指导

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/110689
推荐阅读
相关标签
  

闽ICP备14008679号