Что может привести к прекращению работы автозаполнения Chrome? - PullRequest
12 голосов
/ 30 августа 2011

У меня есть новый сайт, на котором мы работаем, который использует HTML5.Все проверяется, кроме таблиц стилей LESS и тегов Facebook.Однако Chrome не будет автоматически заполняться.Если я вписываю 'chr' в поле имени, я получаю стандартный раскрывающийся список Автозаполнение под ним, но при выделении, щелчке или выборе другого варианта автозаполнения форма не заполняется должным образом.Выпадающее меню автозаполнения просто исчезает.

Я предполагаю, что в моем HTML есть что-то, что сбивает с толку код автозаполнения, но я не могу найти в Интернете никакой информации о реализации автозаполнения Chrome и о том, что посмотретькогда он не работает.

Редактировать: Я знаю, что автозаполнение работает правильно, потому что оно работает на других сайтах, даже на других сайтах, которые мы разработали.Это должно быть что-то особенное для HTML на этом сайте.

Ответы [ 6 ]

16 голосов
/ 31 июля 2012

Chrome не сохраняет пароль или данные автозаполнения, если форма отправляется асинхронно. Например, если вы отправите следующую форму, Chrome предложит вам сохранить пароль:

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

Однако, если вы связываетесь с событием submit и переопределяете поведение по умолчанию, подсказка не будет и данные автозаполнения не будут сохранены:

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

Проверено в 20,0

7 голосов
/ 18 декабря 2012

Похоже, что Chrome разрешает автозаполнение форм только методом POST.Это могло быть обновление безопасности для последней версии.

Автозаполнение будет работать, если вы выполните:

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

Это не будет работать, если вы пропустите методили он настроен на получение:

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

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

3 голосов
/ 30 августа 2011

Единственный способ блокировать его в HTML, который я знаю, это установка: autocomplete = "off" для входных данных.

Я знаю, что выпадающие меню иногда не работают с автозаполнением, но не с текстовыми полями.

2 голосов
/ 03 ноября 2012

Я только что боролся с этой проблемой некоторое время, я обнаружил, что атрибут "name" с тире вроде «email-2» приведет к тому, что Chrome не заполняет поле автоматически В моем случае я изменил его на email2, и теперь он работает. Он влияет только на атрибут «name», а атрибут «id» не имеет значения.

Надеюсь, это поможет кому-то сэкономить время с такой глупой ошибкой.

Привет из Аргентины!

0 голосов
/ 23 мая 2016

Только те элементы, которые требуют автозаполнения, должны быть внутри формы. В противном случае автозаполнение не будет работать. Поместите в форму только те текстовые поля. Если у вас уже есть форма, включающая другие элементы, разделите их и поместите новый тег формы вокруг текстовых полейтребует автозаполнения и ничего внутри него.

0 голосов
/ 31 августа 2011

Извините, я не могу дать вам точный ответ, но я бы начал с удаления всего со страницы, кроме этого поля ввода. Если это работает, то я бы начал «бинарный поиск» - удалил половину исходного макета и посмотрел, работает ли он, если нет - удалите еще половину того, что осталось, и так далее, пока не будет найдена проблемная строка.

То же самое можно применить к css, js и т. Д. Это довольно эффективный способ поиска ошибок (для 1024 строк кода вы найдете точную строку проблемы всего за 10 шагов).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...