我目前正在使用内联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);
}
});
提前致谢!
答案 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);
}
});
另外,我强烈建议使用插件,因为它处理所有这些和一些可能的极端情况......
看看: