2011-08-30 1 views
11

Mam nową witrynę, w której pracujemy, która używa HTML5. Wszystko sprawdza się oprócz arkuszy stylów LESS i znaczników Facebooka. Jednak Chrome nie będzie automatycznie uzupełniany automatycznie. Jeśli wpiszesz "chr" w polu imienia, otrzymam standardowe rozwijane pole autouzupełniania poniżej, ale wyróżnienie, kliknięcie lub inne wybranie opcji autouzupełniania nie wypełnia formularza tak, jak powinien. Lista rozwijana autouzupełniania zniknie.Co może spowodować, że automatyczne uzupełnianie Chrome przestanie działać?

Zgaduję, że w moim kodzie HTML jest coś, co mylnie kodu autouzupełniania, ale nie mogę znaleźć żadnych informacji w sieci na temat autouzupełniania Chrome i rzeczy, których należy szukać, gdy to nie zadziała.

Edycja: wiem, że funkcja autouzupełniania działa poprawnie, ponieważ działa na innych stronach, nawet na innych stronach, które stworzyliśmy. To musi być coś specyficznego dla HTML na tej stronie.

+0

Proszę podać przykładowy kod HTML + JS. Mam przeczucie, że masz jakiś kod js, który zapobiega wysyłaniu formularza, zakładając, że używasz tagu FORM w pierwszej kolejności. – Kayhadrin

+0

Oto potencjalne rozwiązanie problemu: http://stackoverflow.com/questions/16445463/how-to-get-chrome-to-autofill- with-asynchronous-post/22191041#22191041 – Kayhadrin

Odpowiedz

6

Wygląda na to, że Chrome zezwala tylko na autouzupełnianie formularzy z metodą POST. Być może była to aktualizacja zabezpieczeń dla najnowszej wersji.

autouzupełnianie będzie działać, jeśli nie:

<form id="myForm" action="?go" method="post">

To nie będzie działać, jeśli pominąć metodę lub jest on ustawiony, aby uzyskać:

<form id="myForm" action="?go" method="get">

<form id="myForm" action="?go">

+0

To zadziałało dla mnie, dzięki. –

3

Jedyny znany mi w HTML sposób blokowania to ustawienie: autocomplete = "off" na wejściach.

Wiem, że drop-downy nie działają czasami przy autouzupełnianiu, ale nie w polach tekstowych.

+0

Tak, nie używam tego . – Chris

0

Niestety, nie mogę podać ostatecznej odpowiedzi, ale zacznę od usunięcia wszystkiego ze strony oprócz tego pola wejściowego. Jeśli to zadziała, zacznę "wyszukiwanie binarne" - usuń połowę oryginalnego układu i sprawdź, czy działa, jeśli nie, usuń kolejną połowę tego, co zostało i tak dalej, aż do znalezienia linii problemu.

To samo można zastosować do css, js itp. Jest to dość skuteczny sposób wyszukiwania błędów (w przypadku 1024 linii kodu można znaleźć dokładną linię problemu w zaledwie 10 krokach).

15

Chrome nie zapisze hasła ani danych autouzupełniania, jeśli formularz zostanie przesłany asynchronicznie. Na przykład, jeśli przesłać poniższy formularz, Chrome poprosi, aby zapisać hasło:

<form action="/signin"> 
    <input type="text" name="email" /> 
    <input type="password" name="password" /> 
    <button type="submit">Sign In</button> 
</form> 

Jednakże, jeśli wiążą się z imprezy submit i zastąpić domyślne zachowanie, nie będzie szybka i dane autouzupełniania nie zostaną zapisane:

$(function(){ 
    $('form').submit(function(e){ 
     e.preventDefault(); 
     $.post($(this).attr('action'), $(this).serialize()); 
    }); 
}); 

Testowane 20,0

+0

To wszystko nie ma znaczenia, biorąc pod uwagę, że zapisane dane użytkownika już istnieją i powinno być oferowanie wypełnienia formularza przed jego złożeniem. – Chris

+0

Wiem, że to rok później. Wystąpił ten problem, ponieważ przesłałem mój formularz asynchronicznie. Zrobiłem [to pytanie] (http://stackoverflow.com/questions/16445463/how-to-get-chrome-to-autofill-with-asynchronous-post) kilka godzin temu. Zastanawiam się, czy miałeś opinię, czy jest to dobra metoda na obejście tego zachowania. Wygląda na to, że działa w Chrome. – 1252748

+0

Witaj Christopher, Przesyłam moje formularze przez '$ ('formularz'). Submit()' i CHCĘ autouzupełnianie do pracy. Autouzupełnianie działa jednak tylko wtedy, gdy formularz zostanie przesłany za pomocą przycisku przesyłania 'button type =" submit "', czy jakaś idea symuluje przesłanie przycisku, aby Chrome automatycznie uzupełnił zawartość? dzięki – basZero

2

właśnie fighted z tego problemu na chwilę, dowiedziałem się, że „nazwa” atrybutu z kreskę jak „email-2” spowoduje, że Chrome nie będzie au do uzupełnienia pola. W moim przypadku zmieniłem go na email2, a teraz działa. Dotyczy tylko atrybutu "nazwa", a atrybut "id" nie ma znaczenia.

Mam nadzieję, że pomogę komuś zaoszczędzić czas przy takim głupim błędzie.

Pozdrowienia z Argentyny!

-1

Tylko te elementy, które wymagają autouzupełniania, powinny znajdować się w formularzu. W przeciwnym razie auto wypełnij, nie wykonuj pracy. Wstaw tylko te pola tekstowe pod formularzem. Jeśli masz już formularz zawierający inne elementy, oddziel je i umieść nową etykietę formularza wokół pól tekstowych, które wymagają automatycznego uzupełniania i niczego innego w środku.

+1

Nie jest tak w przypadku wielu formularzy z autouzupełnianiem, które znalazłem na wielu stronach internetowych, gdzie autouzupełniam tylko część formularza – gbalduzzi