Автозаполнение от ложного?

Недавно я столкнулся с проблемой, когда я хотел отключить автозаполнение во всех браузерах.

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

То, что работало во всех браузерах, состояло в том, чтобы сделать это autocomplete = false на уровне формы.

Но это не соответствует правилам w3, где они принудительно используют autocomplete = off | on.

Может кто-нибудь объяснить мне, почему false работает во всех браузерах?

даже ie8, все firefox, safari и т.д. Но это не соответствует требованиям.

Ответ 1

Вы правы. Если для атрибута autocomplete установлено значение "off", автозаполнение Chrome в более поздних версиях Chrome не отключается.

Однако вы можете установить автозаполнение на что угодно, кроме "on" или "off" ("false", "true", "nofill"), и это отключит автозаполнение Chrome.

Такое поведение, вероятно, связано с тем, что атрибут autocomplete ожидает значение "on" или "off" и ничего не делает, если вы даете ему что-то еще. Так что, если вы дадите ему что-то кроме этих значений, автозаполнение не будет выполнено.

В текущей версии Chrome было установлено, что установка атрибута autocomplete в значение "off" теперь действительно работает.

Кроме того, я обнаружил, что это работает, только если вы установите атрибут autocomplete в каждом <input> формы.

Ответ на эту неоднозначность был в списках ошибок Chromium здесь.

Отказ от ответственности: это было признано верным в версии Chrome 47.0.2526.106 (64-разрядная версия)

Ответ 2

После версии Chrome 72.XX:

Chrome игнорирует autocomplete="off" autocomplete="no-fill" или autocomplete="randomText" как на уровне поля, так и на уровне формы.

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

Помните, что старый метод с style="display: hidden" или style="visibility: hidden" также игнорируется.

FIX:

Поэтому создайте DIV с height: 0px;overflow:hidden который по-прежнему будет отображать элементы HTML, но скрывать их от пользователя.

Образец кода:

<div style="overflow: none; height: 0px;background: transparent;" data-description="dummyPanel for Chrome auto-fill issue">
        <input type="text" style="height:0;background: transparent; color: transparent;border: none;" data-description="dummyUsername"></input>
        <input type="password" style="height:0;background: transparent; color: transparent;border: none;" data-description="dummyPassword"></input>
</div>

Просто добавьте вышеуказанный div в HTML-форму, и это должно работать!

Ответ 3

Используйте autocomplete = "my-field-name" вместо autocomplete = "off". Будьте осторожны, как вы это называете, так как некоторые значения по-прежнему распознаются как autocomplete = "страна". Я также обнаружил, что использование атрибута placeholder помогло в некоторых сложных сценариях.

Пример: <input type="text" name="field1" autocomplete="my-field-name1" placeholder="Enter your name">

Chrome недавно прекратил использовать autocomplete = "off", потому что они думали, что разработчики злоупотребляли им, не особо задумываясь о том, должна ли форма автозаполняться. Таким образом, они удалили старый метод и заставили нас использовать новый, чтобы гарантировать, что мы действительно не хотим, чтобы он автозаполнялся.

Ответ 4

$("#selector").attr("autocomplete", "randomString");  

Это работало надежно каждый раз для меня.

Примечание. Я вызвал этот LOC в модальном шоу.

Ответ 5

autocomplete = "none" отлично работает для angularjs и angular 7

Ответ 6

Автоматическое завершение значения, кроме выключения и ложных срабатываний.

autoComplete="nope" autoComplete="foo" autoComplete="boo" autoComplete="anythingGoesHere"

Проверено на хром 76 и реагирует 16.9.0

Ответ 7

этот код работает для меня в Chrome версии 75.0.3770.100 (официальная сборка) (64-разрядная версия)

Спасибо

Ответ 8

Как дополнение к ответу @camiblanch

Добавление autocomplete="off" не сократит его.
Измените атрибут типа ввода на type="search".
Google не применяет автоматическое заполнение к входам с типом поиска.