2012-07-04 105 views
1

我目前使用內嵌JavaScript清除輸入文本的默認值焦點。如果用戶沒有輸入任何內容,默認值會顯示一次。代碼如下:jQuery輸入文本清除,返回到默認沒有條目

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

不會$(本).VAL()和$(本).attr( '值')給予同樣的事情? – richard

+0

@richard。編號'$(this).attr('value')'會給你'value'屬性中的內容,而'$(this).val()'會給你實際的值。例如:當您更改文本字段的值並查看源代碼時,* it *沒有更改。 –

+0

爲什麼你不使用插件? – Andre

回答

2

我建議使用html5佔位符而不是defaultValue,並讓現代瀏覽器處理此問題,只有在沒有佔位符支持的情況下才會回到JS。

無論如何,這是一個簡單的實現使用默認值:

$('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/

+0

。猜猜我會使用插件。 –