Что может заставить Chrome автозаполнение Chrome перестать работать?

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

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

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

Ответ 1

Кажется, что Chrome только позволяет автозаполнение форм с методом POST. Возможно, это было обновление безопасности для последней версии.

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

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

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

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

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

Ответ 2

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

Ответ 3

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

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

Ответ 4

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

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

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

Ответ 5

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

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

Ответ 6

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