1

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

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

问题在于我必须将此片段添加到整个站点的每个文本输入中。与此等效的 jQuery 会自动为每个文本输入 (:text) 执行此操作。

我编造了以下两个错误。(1) 它清除文本字段可能具有的任何值。如果值是默认的 attr 值,我只希望它清除它。(2) blur 函数不插入默认值。我很确定我错过了一些非常简单的东西。

$(':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);
            }
        });

提前致谢!

4

1 回答 1

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/

于 2012-07-04T17:08:11.760 回答