2011-01-27 48 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毫秒后执行代码并隐藏标签。