2011-11-15 41 views
0

四,有一個非常簡單的JavaScript問題。不幸的是,在這裏使用查詢的一部分,但也有類似的方式通過JavaScript來做到這一點。基本上,我正在寫一個小腳本,當你點擊一個帶有值的文本框時,它會取出這個值,以便你可以輸入(例如,對於大多數用戶名框,他們有一個小記錄)。有可能有更好的方法來做到這一點(我已經可以想到一些),所以隨時提出建議。無論如何,我都可以輕鬆地運行該部分,但問題在於,無論何時用戶再次單擊時,所有數據都將被刪除,因此如果他們只是想調整某些功能則無法進行調整。解決這個問題(以秒爲單位的顯示代碼)我把一個檢查變量和一個if。這是它的樣子。 (這是行不通的,順便說一句)真的很簡單的JavaScript來刪除文本框中的值

var unumber = 0; 
var pnumber = 0; 

if(unumber<1){ 
    $('#username').click(function(){ 
    unumber = 1; 
    $('#username').val(''); 
}); 
}; 

if(pnumber<1){ 
    $('#password').click(function(){ 
    $('#password').val(''); 
    pnumber = 1; 
    }); 
}; 

什麼我假設的情況是,每一次有人點擊變量被複位,這將導致一個更普遍的問題,如果這是這種情況下,爲什麼會整個腳本,不只是事件處理程序,運行?即時通訊新的JavaScript所以原諒我,如果這是一個愚蠢的問題。無論如何,這是一個非常簡單的腳本,有更好,更有效的方法來做到這一點,但怎麼能這樣做呢?

+0

作爲一個快速提示,你所描述似乎是什麼的「水印」功能提及。我建議快速瀏覽jQuery的可用水印插件,看看是否沒有更好的解決方案可以使用。 – GregL

+0

你能解釋爲什麼你需要像這樣實現它嗎?因爲像你說的那樣可以做得更好/更有效率 – Rob

+0

嗯,我說我做過嗎?如果是這樣,我不,一點也不。我想知道我犯了什麼錯誤,我真的沒有正確地說這個問題 – roozbubu

回答

4

您的號檢查小於1,應點擊處理程序中

var unumber = 0; 
var pnumber = 0; 

$('#username').click(function(){ 
    if(unumber<1){ 
    unumber = 1; 
    $('#username').val(''); 
    } 
}); 

$('#password').click(function(){ 
    if(pnumber<1){ 
    pnumber = 1; 
    $('#password').val(''); 
    } 
}); 

注意,這並不是很穩定,它不處理tab鍵切換到田間地頭。要解決該問題,請處理focus事件。

另一個問題是,如果您不輸入任何內容並離開該字段,則不會收到該消息。更好的方法是在領域獲得焦點時與初始值進行比較。如果離開現場時沒有任何內容,請恢復到原始值。

這裏有一個jQuery插件創建這些佔位符https://github.com/mathiasbynens/Placeholder-jQuery-Plugin

此外,新的瀏覽器支持placeholder屬性,它正是這麼做的http://www.paciellogroup.com/blog/2011/02/html5-accessibility-chops-the-placeholder-attribute/

+0

謝謝!哇,我不知道爲什麼我沒有看到,是的,這個方法肯定是真正的裸露和不動的,我只是試圖發現我的代碼中的愚蠢的錯誤。所以,可以肯定的是,JavaScript處理程序不會再次運行整個腳本嗎?只是處理函數? – roozbubu

+0

對所有瀏覽器都不完全支持的佔位符屬性保持警惕。我的答案中有一個關於jQuery實現的鏈接,以使其在所有瀏覽器中正常運行。 – Rob

+0

以及我正在處理的Web應用程序是針對我的學校的,因爲某些原因,它決定嚴格使用IE6。 :( – roozbubu

0

無需凌亂號碼的檢查,使用數據的元素對有問題

這應該爲你工作。

$('#username,#password').focus(function(){ 
    if(!$(this).data('seen')) { 
    $(this).data('seen',true); 
    $(this).val(''); 
    } 
}); 

http://jsfiddle.net/DeZ7D/

你可以存儲佔位符和替換回模糊,如果用戶沒有輸入任何東西。 更詳細的實施在這裏:

http://www.hagenburger.net/BLOG/HTML5-Input-Placeholder-Fix-With-jQuery.html

+0

這就是OP的代碼試圖做的事情,但並沒有告訴他代碼出了什麼問題,這是問題的關鍵。此外,暗示這是一個糟糕的選擇。這不處理很多情況,在我的答案中列出。 –

+0

感謝您的意見@JuanMendes像你說的在你的改寫中,它不是很健壯 – Rob

+0

謝謝!我接受juans的回答,因爲他向我展示了我在代碼中所做的令人難以置信的愚蠢錯誤,但也非常感謝 – roozbubu