2011-06-07 81 views
1

對於文本框的水印文本,我有一個煩人的問題。如果輸入文本然後刪除文本框,則不會將其驗證爲空

我想要的是,如果用戶點擊即可文本框,並有在文本框中沒有文本比默認的文本應該出現(如搜索...)

我有這個功能檢查:

document.getElementById("searchtextbox").onblur = function() { 

if (document.getElementById("searchtextbox").value == "") { 
    document.getElementById("searchtextbox").setAttribute("value", "Search..."); 
} 

它工作的很好,如果我只需點擊裏面並點擊。問題出現在我點擊裏面時,輸入文本並刪除它,然後單擊外部。我試着用Length == 0,value == null,value.trim()==「」,!value.match(/.+/)來做,並且它們都不返回true。

+0

if條件中使用document.getElementById(「searchtextbox」)。value =「search」; – Max 2011-06-07 10:17:28

回答

2

正如bazmegakapa建議的,考慮placeholder屬性。

要回答你的問題,你的代碼不起作用,因爲你使用的是setAttribute,而用戶只是修改了屬性value。而不是使用setAttribute,請嘗試使用.value = 'Search...'

+0

我愛你,在過去的2個小時裏一直在努力,並不明白我做錯了什麼。使用.value =「搜索..」完美工作! – 2011-06-07 10:26:01

3

請考慮使用HTML5 placeholder屬性

<input type="text" id="searchtextbox" placeholder="Search..." value="" /> 

正如我的回答下,很多人指出,Internet Explorer的不會對您的顯示佔位符文本(一個驚喜)真正熱衷。儘管如此,更多語義使用placeholder做功能檢測瀏覽器是否支持它。

你可以做特徵檢測這樣的(從diveintohtml5.ep.io):

function supports_input_placeholder() { 
    var i = document.createElement('input'); 
    return 'placeholder' in i; 
} 

如果這是假的,你可以用你的Javascript placeholder黑客。

更新:如果您需要幫助如何實現一個很好的方式,請參閱Html placeholder text in a textarea form


我還拍了一下你的代碼,並修復它:

jsFiddle Demo

document.getElementById("searchtextbox").onblur = function() { 
    if (this.value == "") { 
     this.value="Search..."; 
    } 
} 

使用setAttribute這裏不是正確的方式,你不希望設置的屬性,但住房(.value)。你的條件實際上是有效的,但這種變化沒有體現出來。

+0

+1這不幸的是不適用於非IE瀏覽器:( – naveen 2011-06-07 10:15:40

+0

聽起來並不是那麼糟糕,但是你真的認爲使用HTML5和瀏覽器所提供的少量支持是一個好主意嗎? – Craig 2011-06-07 10:15:52

+0

@naveen也不適用於大多數版本的IE瀏覽器,如果它是HTML 5 – Craig 2011-06-07 10:16:46

相關問題