2013-08-17 101 views
0

我正在嘗試使一些javascript進入/退出(onfocus/onblur)textfields。我想褪去「pretyped」文字,當你輸入字段時會消失。問題是測試是否應刪除文本框的值。一種方法是檢查在進入文本字段的值,如果它等於pretyped文本,然後將值設置爲無,就像這樣:style.color if-statement not working

if(field.value=='username'){ 
    field.value=''; //removes pretyped text 
    field.style.color='rgb(0, 0, 0,)'; //turns text black 
} 

然而,用戶可以複製pretyped文本,並輸入該文本後,它也將被刪除。我想這是一個小問題,但我希望儘可能地專業。爲了解決這個問題,我嘗試測試文本字段中文本的顏色,因爲用戶無法複製灰色預先定義文本的顏色。我使用此代碼:

if(field.style.color=='rgb(150, 150, 150)'){ //default color in CSS 
    field.value=''; //removes pretyped text 
    field.style.color='rgb(0, 0, 0,)'; //turns text black 
} 

這不起作用的原因。預格式文本保留,顏色不變。我很確定訪問CSS顏色的語法是正確的(field.style.color),因爲它可以將顏色設置爲黑色(但只在測試字段值時)。

任何幫助表示讚賞:)

編輯:有我的實際代碼沒有多餘的逗號。

+0

雖然語法可能正常,但瀏覽器如何在內部表示顏色可能與您的字符串不同。用'console.log(field.style.color)'檢查它,看看瀏覽器使用了什麼字符串,因此你需要在你的'if()'中比較哪個字符串。 –

+0

您是指佔位符文本?這是一個標準的HTML字段行爲... – kunalbhat

+0

如果你想專業,使用佔位符屬性,而不是輸入默認文本 –

回答

2

正如@MichaelBerkowski所說,field.style.color的值是未定義的。

選項1

如果您在JavaScript設置該值:

txt.style.color = 'rgb(150, 150, 150)'; 

您的代碼應該工作。見this fiddle

選項2

您還可以使用:

window.getComputedStyle(this).getPropertyValue('color'); 

這將讓在CSS設置的值。見this fiddle

+0

我在CSS中定義了字段的顏色。這不行嗎? – August

+0

@八月我試圖在jsfiddle中,它似乎沒有。見[this](http://jsfiddle.net/nevster/Havza/1/)。 – Nev

+1

謝謝,這個作品。你認爲這是最好的方法嗎? – August