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

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

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

8 ответов


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

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


в его нынешнем виде в CSS нет атрибута "автозаполнение off". Однако html имеет простой код для этого:

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

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

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


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

$('input').attr('autocomplete','off');

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

<form id="Form1" runat="server" autocomplete="off">

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


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

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

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

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

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

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

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


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

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

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


$('input').attr('autocomplete','off');