2011-01-27 54 views
6

我做了一個包含'username'和'password'標籤的登錄表單,下面的jquery用於隱藏標籤,一旦用戶關注場。雖然jquery會自動填充Chrome標籤文本

$(document).ready(function(){ 

$("form.login input") 
    .bind("focus.labelFx", function(){ 
    $(this).prev().hide(); 
    }) 
    .bind("blur.labelFx", function(){ 
    $(this).prev()[!this.value ? "show" : "hide"](); 
    }) 
    .trigger("blur.labelFx"); 

}); 

和HTML:

<form method="post" id="login-form" action="/accounts/login/"> 
    <div class="input-wrapper"> 
     <label for="id_username">Username</label> 
     <input id="id_username" size="30" type="text" name="username"> 
    </div> 
</form> 

的問題是,Chrome的自動完成功能似乎加載此代息前的用戶名和密碼就可以抓住它,讓我奇怪的是重疊的文字,直到我手動對焦就可以了。這是而不是 Firefox的一個問題。圖片:http://imgur.com/kJRLa

有關如何解決此問題的任何建議,以便自動填充數據導致標籤隱藏?

+0

您是否試過關閉文本框的自動填充功能?很多人都遇到了自動完成的問題,並且之前已經被問到過。檢查這個問題是如何做到的。 http://stackoverflow.com/questions/2530/how-do-you-disable-browser-autocomplete-on-web-form-field-input-tag – sarcastyx 2011-01-28 00:02:38

回答

5

Chrome瀏覽器(以及Google工具欄在其他瀏覽器上的自動填充功能)等同於表單填充行爲,是網絡公民。當它填寫表單域時,它不會觸發正常事件。如果您不希望禁用自動填充,則可以設置一個定時檢查以確定是否發生自動填充的定時事件。

this SO question的第一個答案(由問題提問者)是一個示例解決方案。

5

閱讀Benjamin Miles tutorial後,我注意到你可以使用jQuery自動填充檢測鉻合金,像這樣:

$(window).load(function(){ 
    if($('input:-webkit-autofill')){ 
     //Remove Label Function 
    }   
}); 

注意,您必須將代碼放在$(window).load(function(){});

,而不是

$(document).ready(function(){}) 
0

你可以還可以使用以下內容

var wait = window.setTimeout(function(){ 
//Pseduo code 
label.style.display = "none"; 
},5); 

5毫秒後執行代碼並隱藏標籤。