jQuery输入文本清除,返回默认无输入

jQuery输入文本清除,返回默认无输入,jquery,forms,textinput,Jquery,Forms,Textinput,我目前正在使用内联javascript清除焦点上输入文本的默认值。如果用户未输入任何内容,则默认值会显示一次。代码如下: onfocus="if(this.value==this.defaultValue) this.value='';" onblur="if(this.value=='') this.value=this.defaultValue;" 问题在于,我必须将这个片段添加到整个站点的每个文本输入中。对于每个文本输入(:text),jQuery的等价物是什么 我编造了以下两个错误。(

我目前正在使用内联javascript清除焦点上输入文本的默认值。如果用户未输入任何内容,则默认值会显示一次。代码如下:

onfocus="if(this.value==this.defaultValue) this.value='';" onblur="if(this.value=='') this.value=this.defaultValue;"
问题在于,我必须将这个片段添加到整个站点的每个文本输入中。对于每个文本输入(:text),jQuery的等价物是什么

我编造了以下两个错误。(1) 它清除文本字段可能具有的任何值。我只想在值为默认attr值时清除它。(2) 模糊函数不插入默认值。我很确定我错过了一些非常简单的东西

$(':text').focus(function() {
            var value = $(this).val();
            var defval = $(this).attr('value');
            if(value == defval) {
                $(this).val('');
            }
        });
        $(':text').blur(function() {
            var value = $(this).val();
            var defval = $(this).attr('value');
            if(value == '') {
                $(this).val(defval);
            }
        });

提前谢谢

我建议使用html5占位符而不是defaultValue,让现代浏览器来处理这个问题,只有在没有占位符支持的情况下才使用JS

无论如何,这是一个使用defaultValue的简单实现:

$('input[type="text"]').on({
    focus: function(){
        var $this = $(this);
        if($this.val() === $this[0].defaultValue) $this.val('');
    },
    blur: function(){
        var $this = $(this);
        if($this.val() === '') $this.val($this[0].defaultValue);
    }
});
另外,我强烈建议使用插件,因为它可以处理所有这些情况和一些可能的情况

看一看:


美元(this.val()和美元(this.attr('value')不会给出相同的结果吗?@richard。否。
$(this).attr('value')
将提供
value
属性中的内容,而
$(this).val()将提供实际值。示例:当您更改文本字段的值并查看源代码时,它没有更改。Ayman是正确的@Andre,我正在避免使用插件,并尝试自己编写代码,以帮助我更好地掌握这门语言。这看起来很简单,不需要大量的插件就可以完成。我可能错了。