2011-02-17 134 views
5

我目前使用..清除TEXTAREA值點擊(聚焦狀態)

onfocus="this.value=''; return false;" 

清除我的文字區域內的值留下評論。但是,當您點擊輸入評論並輸入一些內容時,如果您要在框外點擊以閱讀頁面上的其他內容,然後再次點擊textarea框內的內容以返回評論,則會清除當前輸入。

有沒有辦法在初始點擊時清除textarea,只是爲了清除默認值而不是其他瀏覽器頁面會話的其餘點擊?

回答

0

在javascript中聲明變量clearedOnce,該值爲false。在你的焦點上,檢查這個變量。如果它是假的,則將其設置爲true並清除textarea。所有以後的點擊都無能爲力。代碼:

onfocus='if (!clearedOnce) { this.value = ''; clearedOnce = true;} return false;' 
+0

@Derek:應用你的建議編輯 – Andomar 2011-02-17 19:12:52

0

您可以使用全局頁面var。

在元素

var tracker = {}; 

後來高於script元素...

<textarea name="a" onfocus="if(!tracker[this.name]) { tracker[this.name]=true; this.value=''; } return false;">Placeholder text</textarea> 
8

這是更好地把指令轉換成一個標籤標記,它正上方,textarea的,然後把它隱藏或如果textarea是關注的話,則顯示它。原因是因爲你的textearea將填充指令,如果它們在表單中,這些指令可能會被髮送。

但是,解決你的問題,你需要做的是:

onfocus="if(this.value== "your initial text"){this.value=''}; return false;" 
+0

一個更好的版本會的onfocus =「如果(THIS.VALUE =此。 defaultValue){this.value =''}; return false;「 – KOGI 2011-02-17 18:43:31

1

這將有助於

function clearTA { 
    if(this.value != "type here") { 
     this.value = ''; 
     return false; 
    } 
} 

和聚焦狀態HTML屬性

...onfocus="clearTA()".. 
0

所以我想你有一個預先填好的值,如「在此輸入您的文字」? 嘗試添加此javascript:

function clearText(textarea,prefilled){ 
     if(textarea.value==prefilled) 
      textarea.value=""; 
     return false; 
    } 

然後,你輸入應該是: 在這裏輸入

文字這應該讓你開始...

1
<script type="text/javascript"> 
function clearOnInitialFocus (fieldName) { 
    var clearedOnce = false; 
    document.getElementById(fieldName).onfocus = (function() { 
    if (clearedOnce == false) { 
     this.value = ''; 
     clearedOnce = true; 
    } 
    }) 
} 
window.onload = function() { clearOnInitialFocus('myfield'); 
</script> 

來源:http://snipplr.com/view/2206/clear-form-field-on-first-focus/

1

我知道這是遲到,但對任何有這個問題的人,我相信最簡單的答案是

onfocus="this.value=''; this.onfocus='';"

應該做的正是你想要的,而不必存儲/查看任何變量。

3

我認爲從內容分離邏輯是個好習慣。因此,使用jQuery(我們都使用jQuery,是嗎?),你可以這樣做:

$(document).ready(function() { 
    var _bCleared = false; 
    $('form textarea').each(function() 
    { 
     var _oSelf = $(this); 

     _oSelf.data('bCleared', false); 
     _oSelf.click(function() 
     { 
      if (!_oSelf.data('bCleared')) 
      { 
       _oSelf.val(''); 
       _oSelf.data('bCleared', true); 
      } 
     }); 
    }); 
}); 

這將遍歷所有網站上的文字區域,並存儲在一個單獨的數據綁定他們明確狀態的布爾值。 onclick事件也是針對每個textarea單獨處理的,因此您可以在單個頁面上使用多個textarea/textarea清除功能,並且不需要Javascript濺出您的html。

1

取而代之,使用HTML5placeholder併爲舊版瀏覽器使用jquery插件。

運行例如這裏: http://jsfiddle.net/dream2unite/xq2Cx/

<input type="text" name="email" id="email" placeholder="[email protected]"> 

必須通過以下腳本陪同:

$('input[placeholder], textarea[placeholder]').placeholder(); 

當你輸入一個電子郵件文本(佔位符)會消失,只有當你刪除電子郵件將文本(佔位符)重新出現。

最後,一個jQuery插件佔位符的一個明顯的例子就是這樣一個: http://mathiasbynens.be/demo/placeholder