Как отключить автозаполнение для определенного поля ввода

Я использую поле ввода, чтобы получить почтовый индекс с помощью API Google, я попытался остановить автозаполнение с помощью autocomplete = "off", но все еще сохранил предыдущие данные

 <input  onClick = "this.select();" type = "text" id = "postal_code" name = "postal_code" autocomplete = "off" onFocus = "geolocate()">

Помогает ли это: stackoverflow.com/questions/29432665/…

Ole EH Dufour 25.06.2018 19:58
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
1
1
685
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Вы используете атрибут autocomplete в полях ввода. Вы должны использовать это в теге <form> для переключения автозаполнения.

<form action = "#" method = "get" autocomplete = "off">
  First name:<input type = "text" name = "fname"><br>
</form>
<br>
<br>
<form action = "#" method = "get" autocomplete = "on">
  First name:<input type = "text" name = "fname"><br>
</form>

Он отлично работает почти во всех браузерах. И сам пример тоже работает, не так ли?

suzan 25.06.2018 21:20

если у меня более одного поля ввода в форме, то автозаполнение не будет работать, но если второй ввод вне формы будет работать нормально

user9953513 25.06.2018 23:41
  1. Конечно, вы можете использовать автозаполнение во входных тегах.
  2. И неправильно добавлять пару таких тегов формы.
  3. Если вы можете показать полный код формы ... если возможно

<form autocomplete = "off"> <input onClick = "this.select ();" type = "text" id = "postal_code" onFocus = "geolocate ()"> <textarea> </textarea> </form> <button id = "save_address"> <span> Сохранить </span> </button>

user9953513 25.06.2018 23:19

автозаполнение не работает, если у меня есть буксир или несколько полей ввода, но если одно поле ввода работает нормально и теперь автозаполнение

user9953513 25.06.2018 23:31

если у меня более одного поля ввода в форме, то автозаполнение не будет работать, но если второй ввод вне формы будет работать нормально

user9953513 25.06.2018 23:37

Попробуйте добавить это в свой тег input: autocomplete = "__away"

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

Вот идеальное решение, которое будет работать во всех браузерах!

TL; DR

Переименуйте свои имена полей ввода и идентификаторы полей во что-нибудь несвязанное, например 'data_input_field_1'. Затем добавьте символ &#8204; в середину ваших ярлыков. Это непечатаемый символ, поэтому вы его не увидите, но он обманом заставляет браузер не распознавать поле как поле, требующее автозаполнения, поэтому встроенный виджет автозаполнения не отображается!

Детали

Почти все браузеры используют комбинацию имени поля, идентификатора, заполнителя и метки, чтобы определить, принадлежит ли поле к группе полей адреса, для которых может быть полезно автозаполнение. Поэтому, если у вас есть поле типа <input type = "text" id = "address" name = "street_address">, почти все браузеры будут интерпретировать это поле как поле адреса. Таким образом, браузер будет отображать встроенный виджет автозаполнения. Мечта была бы о том, что использование атрибута autocomplete = "off" будет работать, к сожалению, большинство браузеров в настоящее время не подчиняются запросу.

Поэтому нам нужно использовать некоторые уловки, чтобы заставить браузеры не отображать встроенный виджет автозаполнения. Мы сделаем это, заставив браузер поверить в то, что поле вообще не является адресным полем.

Начните с переименования атрибутов я бы и название во что-то, что не выдаст, что вы имеете дело с данными, связанными с адресами. Поэтому вместо <input type = "text" id = "city-input" name = "city"> используйте что-то вроде этого вместо <input type = "text" id = "input-field-3" name = "data_input_field_3">. Браузер не знает, что представляет собой data_input_field_3. Но ты делаешь.

Если возможно, не используйте текст-заполнитель, так как большинство браузеров также это учитывают. Если вам нужно использовать текст-заполнитель, вам придется проявить творческий подход и убедиться, что вы не используете никаких слов, относящихся к самому параметру адреса (например, City). Использование чего-то вроде Enter location может помочь.

Последний параметр - это метка, прикрепленный к полю. Однако, если вы похожи на меня, вы, вероятно, захотите сохранить метку нетронутой и отображать узнаваемые поля для ваших пользователей, такие как «Адрес», «Город», «Штат», «Страна». Что ж, отличные новости: ВЫ МОЖЕТЕ! Лучший способ добиться этого - вставить несоединяемый символ нулевой ширины &#8204; в качестве второго символа в метке. Итак, заменив <label>City</label> на <label>C&#8204;ity</label>. Это непечатаемый символ, поэтому ваши пользователи будут видеть City, но браузер будет обманут, увидев C ity и не распознав поле!

Миссия выполнена! Если все прошло хорошо, браузер больше не должен отображать встроенный виджет автозаполнения адресов в этих полях!

Надеюсь, это поможет вам в ваших усилиях!

Другие вопросы по теме