Подтвердить что ты не робот

Автозаполнение заполняет неправильные поля

У меня есть сайт со страницей проверки, которая всегда работала красиво.
В последнее время любой клиент, который использует автозаполнение для заполнения своей информации, получает свой адрес электронной почты, сбрасываемый в поле компании. Нет никаких изменений, которые мы сделали, которые могут повлиять на это. Какие еще инструменты я могу использовать, чтобы понять это?

4b9b3361

Ответ 1

Мы все еще не знаем, что вызвало проблему, но для тех, кто видит это, мы закончили создание поля readonly, чтобы автозаполнение не заполнило его. Затем мы написали JS, что в фокусе он становится активным, и пользователь может вручную его заполнить.

<input type="text" name="company" readonly="" onfocus="this.removeAttribute('readonly');">

Ответ 3

Возможно, проблема с OP была решена (или может снова вернуться в недавних обновлениях!), Но по состоянию на начало 2019 года вы можете диагностировать некоторые из этих проблем, установив флаг show-autofill-type-predictions в chrome://flags, перезапустив Chrome, а затем посмотрев на заголовок (текст всплывающей подсказки) для рассматриваемого ввода. Он расскажет вам, какая информация используется для угадывания "типа" поля, и какие сохраненные данные следует использовать для его заполнения.

Ответ 4

Я столкнулся с аналогичной проблемой, имея поле "компания", помещенное под поле "имя". Это поле компании было автоматически заполнено годом рождения. Он пришел из другой формы на том же сайте, на котором была полевая группа "Дата рождения", чуть ниже поля "имя". Таким образом, хром сохранил значения автозаполнения в этом порядке. Я закончил с изменением моего второго порядка полей формы (к сожалению, это было лучшее, что я мог сделать).

Ответ 5

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

<input type="text" name="company" id="company" placeholder="company">

Если это все еще не работает, вы можете отключить автозаполнение для этого конкретного поля *:

<input type="text" name="company" id="company" placeholder="company" autocomplete="off">

* вы также можете отключить автозаполнение для всей формы с использованием того же свойства автозаполнения и значения выключения.

Ответ 6

Почти невидимый трюк с прокси-сервером ввода

Я только что столкнулся с той же проблемой с Chrome 72... Он просто хотел заполнить любое поле (выбрать или ввести), пока оно не было доступно только для чтения (с полным отсутствием уважения к атрибутам name, autocomplete и т.д.) Любым видом. значения, которое он мог сохранить ранее.

  • Возможно, вы захотите избежать заполнения поля, потому что вы прослушиваете событие change или есть некоторая проверка на входе, которая может вызвать сообщение об ошибке только из-за плохого автозаполнения.
  • Вы просто хотите, чтобы значение автозаполнения было отброшено и даже не отображено (даже перед выполнением JavaScript).

Вы просто предоставляете браузеру другое поле для заполнения, и его практически невозможно увидеть, скрывая его под другим полем.

    <input type="text" id="autofill-if-you-dare" style="position: absolute; z-index: -1; top: 20px; width: 0; height:0" />

Примечание: Вы все еще можете скрыть или удалить его с помощью javascript впоследствии, но не следует скрывать его до завершения автозаполнения, поскольку Chrome будет заполнять только видимые поля. И, как указывалось в других ответах, это не вызывает какого-либо события, поэтому вы должны полагаться на опрос для этого.

Ответ 7

Я столкнулся с этой проблемой в последнее время, особенно с хромом. Кажется, что

autocomplete="off"

Chrome больше не работает. Я нашел следующие источники полезными:

Chromium (который, как я полагаю, является основой многих Chrome) имеет следующий код, который показывает регулярное выражение, которое используется при поиске полей для заполнения с помощью автозаполнения Chrome:

https://cs.chromium.org/chromium/src/components/autofill/core/common/autofill_regex_constants.cc?sq=package:chromium&g=0&l=262

Я чувствую, что они нашли другую работу, которую я нашел, чтобы следовать этим соглашениям: https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete

Или, по крайней мере, убедитесь, что вы задаете атрибут, который достаточно отличается от приведенного выше списка, чтобы он не использовался функциями автозаполнения.

Ответ 8

Недавно у нас возникла такая проблема с нашей страницей корзины покупок, когда ее просматривали в Chrome, и у вас были сохраненные имя пользователя и пароль для сайта. Chrome необъяснимым образом поместил бы значение имени пользователя в поле количества. После долгих попыток мы поняли, что на странице есть скрытое поле имени пользователя и пароля. Они автоматически заполнены правильно, когда видны. Когда скрытый хром будет автоматически заполнять поле ввода количества. Установив autocomplete = "username" и autocomplete = "current-password" в этих элементах управления, проблема исчезла.