2012-04-19 130 views

回答

4

您使用 'placeholderText' 作为一个选择,不会选择任何内容。改为使用$('input').focus(...$('input').blur(...

UPDATE

如果要存储现有的值,然后替换它,然后将其保存为.data()<input>元素本身:

$('input').focus(function() { 
    $this = $(this); 
    $this.data('oldval',$this.val()); 
    $this.val(''); 
}); 
$('input').blur(function() { 
    $this = $(this); 
    $this.val($this.data('oldval')); 
});​ 

http://jsfiddle.net/mblase75/AL2vS/12/

或可能:

$('input').blur(function() { 
    $this = $(this); 
    if ($this.val().length==0) { // only if the field is blank 
     $this.val($this.data('oldval')); 
    }; 
});​ 
+0

http://jsfiddle.net/AL2vS/6/我这样做,但现在一切都显示出来作为我的第一个价值属性。 – webdevgirl 2012-04-19 20:40:30

+0

可修复,但我不明白为什么你想在用户的文本模糊之外尽快覆盖用户的文本。 – Blazemonger 2012-04-19 20:42:24

+0

ohh对不起,你是对的 – webdevgirl 2012-04-20 01:41:46

0

这将至少得到去除文字工作的:

var placeholderText = $('input'); 

placeholderText.focus(function() { 
    $(this).attr('value', ""); 
}); 
placeholderText.blur(function() { 
    $(this).attr('value', phTextVal); 
});​ 

你也可以看看在HTML5 placeholder param

+0

是的我知道html5占位符属性会自动做到这一点,但我想学习jQuery的方式 – webdevgirl 2012-04-19 20:50:12

0

我想更好的办法是:

var placeholderText = $('input'); 

$(placeholderText).focus(function() { 
    phTextVal = $(this).val(); 
    $(this).val(""); 
}).blur(function() { 
    $(this).val(phTextVal); 
});​ 
0

检查出来,

$('input').focus(function() { 
    placeholderText = $('input').val(); 
    $(this).val(""); 
}); 

$('input').blur(function() { 
    $(this).val(placeholderText); 
});​ 

http://jsfiddle.net/AL2vS/8/

你仍然需要做一些与被输入的数据。

0

如何使用object.defaultValue属性?

功能:

$.fn.smartInput=function(){ 
    return this.each(function(i,o){ 
    $(o).focus(function(){ if(this.value==this.defaultValue) this.value='';}) 
     .blur(function(){ this.value=(this.value=='')?this.defaultValue:this.value;}); 
    }); 

}

用法:

$('input').smartInput();