Чи можна використовувати CSS для вимкнення автозаповнення елемента форми (зокрема, текстового поля)?
Я використовую бібліотеку тегів, яка не дозволяє елемент автозаповнення, і я хотів би відключити автозаповнення без використання Javascript.
Відповіді:
Ви можете використовувати згенерований id
і name
щоразу, який відрізняється, тому браузер не може запам'ятати це текстове поле і не зможе запропонувати деякі значення.
Це, принаймні, безпечна альтернатива для переглядачів, але я б рекомендував піти з відповіддю від RobertsonM ( autocomplete="off"
).
autocomplete="off"
, буде проігноровано у версії браузера X (поточна + 1). (Наприклад, остання версія Google Chrome ігнорує автозаповнення = вимкнено.)
id
він все одно збереже його в кеш-пам'яті (тобто на жорсткому диску користувача). Що жахливо робити з чиїмось номером кредитної картки або будь-якою іншою конфіденційною інформацією. Крім того, це зайво захаращує дисководи вашого користувача. Кожного разу, коли вони відвідують вашу сторінку, на їх комп’ютері зберігатиметься новий (схожий на файли cookie) файл. Просто на халепу, спробуйте очистити кеш-пам’ять Chrome і подивитися, скільки місця вона звільнить (якщо ви цього не робили деякий час). Тому я називаю це жахливою ідеєю.
На даний момент в CSS немає атрибута "автозаповнення". Однак у html є простий код для цього:
<input type="text" id="foo" value="bar" autocomplete="off" />
Якщо ви шукаєте ефектор на всьому сайті, простим було б просто мати функцію js для проходження всіх "входів" та додавання цього тегу, або шукати відповідний клас / ідентифікатор css.
Атрибут автозаповнення чудово працює в Chrome та Firefox (!), Але також див. Чи існує W3C дійсний спосіб вимкнути автозаповнення у формі HTML?
autocomplete="anyrandominvalidvalue"
працювати.
Ви можете легко реалізувати за допомогою jQuery
$('input').attr('autocomplete','off');
form
- це ЄДИНА річ, яка спрацювала. Ні input
. Дякую.
Якщо ви використовуєте a, form
ви можете вимкнути всі автозавершення за допомогою,
<form id="Form1" runat="server" autocomplete="off">
CSS не має цієї можливості. Вам потрібно буде використовувати сценарії на стороні клієнта.
autocomplete="false"
буде працювати в Edge. Технічно будь-яке недійсне значення тут може замінювати значення "false".
Я спробував усі запропоновані способи відповідей на це запитання та інших статей в Інтернеті, але все одно не працював. Я спробував autocomplete = "new-random-value", autocomplete = "off" в елементі форми, використовуючи скрипт на стороні клієнта, як показано нижче, але за межами $ (document) .ready (), як зазначив один із користувачів:
$(':input').on('focus', function () {
$(this).attr('autocomplete', 'off')
});
Я знайшов, можливо, ще один пріоритет у браузері, що спричиняє цю дивну поведінку! Тож я шукав більше і, нарешті, ще раз уважно прочитав рядки цієї гарної статті :
З цієї причини багато сучасних браузерів не підтримують autocomplete = "off" для полів входу:
Якщо сайт встановлює автозаповнення = "вимкнено" для, а форма включає поля введення імені користувача та пароля, тоді браузер все одно запропонує запам'ятати цей логін, і якщо користувач погодиться, браузер автоматично заповнить ці поля наступного разу, коли користувач відвідує сторінку. Якщо сайт встановлює autocomplete = "off" для полів імені користувача та пароля, тоді браузер все одно запропонує запам'ятати цей логін, і якщо користувач погодиться, браузер автоматично заповнить ці поля наступного разу, коли користувач відвідає сторінку. Це поведінка у Firefox (з версії 38), Google Chrome (з 34) та Internet Explorer (з версії 11).
Якщо ви визначаєте сторінку управління користувачами, де користувач може вказати новий пароль для іншої особи, і тому ви хочете запобігти автоматичному заповненню полів паролів, ви можете використовувати autocomplete = "new-password" ; проте підтримка цього значення у Firefox не реалізована.
Це просто спрацювало. Я спробував спеціально в chrome, і сподіваюся, це продовжує працювати і допомагати іншим.
Завдяки рішенню @ ahhmarr мені вдалося вирішити ту саму проблему в моєму середовищі користувальницького інтерфейсу Angular + , яку я поділюсь тут для тих, хто зацікавлений.
У свій index.html
я додав такий сценарій:
<script type="text/javascript">
setTimeout(function() {
$('input').attr('autocomplete', 'off');
}, 2000);
</script>
Потім, щоб охопити зміни стану, я додав у свій кореневий контролер наступне:
$rootScope.$on('$stateChangeStart', function() {
$timeout(function () {
$('input').attr('autocomplete', 'off');
}, 2000);
});
Час очікування для html, щоб відтворити перед застосуванням jquery.
Якщо ви знайдете краще рішення, повідомте мене про це.
Ви не можете використовувати CSS для вимкнення автозаповнення, але ви можете використовувати HTML:
<input type="text" autocomplete="false" />
Технічно ви можете замінити false
будь-яке недійсне значення, і воно буде працювати. Це iOS, єдине рішення, яке я знайшов, яке також працює в Edge.
Я просто використовую 'new-password'
замість цього'off'
на автозаповнення.
і я також намагаюся використовувати цей код і працює (принаймні з мого боку), я використовую WP та GravityForm для вашої інформації
$('input').attr('autocomplete','new-password');
$('input').attr('autocomplete','off');