Отключить автозаполнение через CSS

Можно ли использовать CSS для отключения автозаполнения в элементе формы (особенно в текстовом поле)?

Я использую библиотеку тегов, которая не позволяет элемент автозаполнения, и я хотел бы отключить автозаполнение без использования Javascript.

75 голосов | спросил David 2 FebruaryEurope/MoscowbTue, 02 Feb 2010 20:44:00 +0300000000pmTue, 02 Feb 2010 20:44:00 +030010 2010, 20:44:00

9 ответов


0

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

Это по крайней мере кросс-браузерная альтернатива, но я бы порекомендовал пойти с ответом от RobertsonM (autocomplete="off"). /р>

ответил codevour 2 FebruaryEurope/MoscowbTue, 02 Feb 2010 20:49:08 +0300000000pmTue, 02 Feb 2010 20:49:08 +030010 2010, 20:49:08
0

В сущности, в CSS нет атрибута «автозаполнение». Тем не менее, HTML имеет простой код для этого:

<input type="text" id="foo" value="bar" autocomplete="off" />

Если вы ищете эффектор для всего сайта, проще всего было бы просто иметь функцию js для запуска всех «входов» и добавить этот тег, или искать соответствующий класс /идентификатор класса css.

Атрибут autocomplete прекрасно работает в Chrome и Firefox (!), но также смотрите Существует ли действительный способ W3C отключить автозаполнение в форме HTML?

ответил RobertsonM 2 FebruaryEurope/MoscowbTue, 02 Feb 2010 21:02:27 +0300000000pmTue, 02 Feb 2010 21:02:27 +030010 2010, 21:02:27
0

вы можете легко реализовать с помощью jQuery

$('input').attr('autocomplete','off');
ответил ahhmarr 28 WedEurope/Moscow2011-12-28T08:24:25+04:00Europe/Moscow12bEurope/MoscowWed, 28 Dec 2011 08:24:25 +0400 2011, 08:24:25
0

Если вы используете form, вы можете отключить все автозаполнения кнопкой

<form id="Form1" runat="server" autocomplete="off">
ответил Ernest 23 Jam1000000amThu, 23 Jan 2014 02:10:34 +040014 2014, 02:10:34
0

CSS не имеет этой возможности. Вам нужно будет использовать скрипты на стороне клиента.

ответил Sampson 2 FebruaryEurope/MoscowbTue, 02 Feb 2010 20:45:59 +0300000000pmTue, 02 Feb 2010 20:45:59 +030010 2010, 20:45:59
0

Я попробовал все предложенные способы из ответов на этот вопрос и других статей в Интернете, но все равно не работал. Я попытался autocomplete = "new-random-value", autocomplete = "off" в элементе формы, используя клиентский скрипт, как показано ниже, но за пределами $ (document) .ready (), как один из упомянутых пользователем:

$(':input').on('focus', function () {
  $(this).attr('autocomplete', 'off')
});

Я обнаружил, что, возможно, другой приоритет в браузере вызывает такое странное поведение! Поэтому я поискал больше и, наконец, внимательно прочитал следующие строки из эта хорошая статья :

  

По этой причине многие современные браузеры не поддерживают   autocomplete = "off" для полей входа в систему:

     

Если сайт устанавливает autocomplete = "off" для a, а форма включает   поля ввода имени пользователя и пароля, тогда браузер все равно предложит   запомнить этот логин, и если пользователь согласится, браузер   Заполните эти поля при следующем посещении страницы пользователем. Если   сайт устанавливает autocomplete = "off" для полей имени пользователя и пароля,   тогда браузер все равно предложит запомнить этот логин, и если   Пользователь соглашается, что браузер автоматически заполнит эти поля в следующий раз   пользователь заходит на страницу. Это поведение в Firefox (начиная с версии   38), Google Chrome (с 34) и Internet Explorer (с версии)   11).

     

Если вы определяете страницу управления пользователями, где пользователь может указать   новый пароль для другого человека, и поэтому вы хотите предотвратить   автозаполнение полей пароля, вы можете использовать    автозаполнение = "новый пароль" ; однако поддержка этого значения не была реализована в Firefox.

Это просто сработало. Я пробовал в Chrome специально, и я надеюсь, что это продолжает работать и помогать другим.

ответил QMaster 22 PM00000020000000331 2018, 14:24:03
0

Благодаря @ ahhmarr я смог решить ту же проблему в своем Среда Angular + ui-router , которой я поделюсь для всех, кто заинтересован.

В моем 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.

Если вы найдете лучшее решение, пожалуйста, дайте мне знать.

ответил TrampGuy 5 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 05 Sep 2016 18:28:50 +0300 2016, 18:28:50
0

Я решил проблему, добавив поддельное имя автозаполнения для всех входов.

$("input").attr("autocomplete", "fake-name-disable-autofill");
ответил Webdma 30 +03002018-10-30T21:59:06+03:00312018bEurope/MoscowTue, 30 Oct 2018 21:59:06 +0300 2018, 21:59:06
0
$('input').attr('autocomplete','off');
ответил rohit 28 PM00000010000005031 2014, 13:37:50

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132