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

时间:2012-07-04 16:41:07

标签: jquery forms textinput

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

onfocus="if(this.value==this.defaultValue) this.value='';" onblur="if(this.value=='') this.value=this.defaultValue;"

问题在于我必须将此代码段添加到整个站点的每个文本输入中。 jQuery相当于什么会自动为每个文本输入(:text)执行此操作。

我用两个错误编造了以下内容。 (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);
            }
        });

提前致谢!

1 个答案:

答案 0 :(得分:2)

我建议使用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);
    }
});

另外,我强烈建议使用插件,因为它处理所有这些和一些可能的极端情况......

看看:

http://unwrongest.com/projects/defaultvalue/

相关问题