2012-04-19 75 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();