2011-01-27 2 views
6

Zrobiłem formularz logowania, który zawiera etykiety "nazwa użytkownika" i "hasło", a poniżej jquery służy do ukrywania etykiet, gdy użytkownik skupi się na pole.Automatyczne uzupełnianie w Chrome (ale nie w Firefoksie) zachodzi na nakładanie się tekstu etykiety pomimo jquery

$(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"); 

}); 

i 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> 

Problemem jest to, że autouzupełniania Chrome wydaje się ładuje nazwy użytkownika i hasła przed tym scrip można go złapać, dając mi dziwnie nakładającą tekst aż ręcznie skupić się na niej . To jest , a nie problem z Firefoksem. Pic: http://imgur.com/kJRLa

Wszelkie sugestie, jak to naprawić, aby automatycznie wypełnione dane powodowały ukrywanie etykiet?

+0

Czy próbowałeś wyłączyć funkcję autouzupełniania dla pola tekstowego? Wiele osób ma problemy z autouzupełnianiem i pytano o to na SO. Sprawdź to pytanie, aby dowiedzieć się, jak to zrobić. http://stackoverflow.com/questions/2530/how-do-you-disable-browser-autocomplete-on-web-form-field-input-tag – sarcastyx

+0

Rozumiem, że rozwiązałoby to mój problem, ale ja jak autouzupełnianie w teorii i chciałbym, aby ludzie mogli go użyć do wstępnego wypełnienia swojej nazwy użytkownika i hasła. W najgorszym razie mogę to zrobić, ale wolę znaleźć rozwiązanie, które pozwoli mi zachować autouzupełnianie i ukrywać etykiety. – IanWhalen

Odpowiedz

5

Chrome (i, podobnie, funkcja automatycznego wypełniania paska narzędzi Google w innych przeglądarkach) jest złym obywatelem internetu z zachowaniem wypełniania formularzy. Wypełniając pola formularza, nie wywołuje normalnych zdarzeń. Jeśli nie chcesz wyłączać autouzupełniania, możesz skonfigurować zdarzenie czasowe, które okresowo sprawdza, czy wystąpiło autouzupełnianie.

Pierwsza odpowiedź (przez pytającego) z this SO question jest jednym z przykładowych rozwiązań.

5

Po przeczytaniu Benjamin Miles tutorial Zauważyłem można wykryć chromes autofill z jQuery tak:

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

Pamiętaj, że musisz umieścić kod w $(window).load(function(){});

i nie

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

Mogłabyś również użyj następującego

Po 5 milisekundach kod zostaje wykonany, a etykieta zostaje ukryta.