2010-02-02 3 views
65

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

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

ответ

31

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

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

+3

Побочным эффектом этого является то, что история браузера забивается множеством разных (случайных) полей формы. Каждый поиск известных значений в локальных databae браузеров займет некоторое время. – dermatthias

+4

Хорошая идея, но это не мешает сохранить номера кредитных карт в незашифрованной базе данных автозаполнения. –

+2

Это ужасное предложение и должно быть немаркировано как ответ. – c00000fd

12

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

+0

Любая идея, как отключить это в краю? Независимо от того, что мы делаем, мы это видим. –

104

В-третьих, в CSS нет атрибута autocomplete off. Тем не менее, HTML имеет простой код для этого:

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

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

автозаполнения атрибут отлично работает в Chrome и Firefox (!), Но смотри также Is there a W3C valid way to disable autocomplete in a HTML form?

+1

Это не работает – Oneezy

41

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

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

Динамический выключатель, огромное спасибо! – Juto

+2

В большинстве случаев $ ('form'). Attr ('autocomplete', 'off'); (см. комментарий к ответу ниже) – irakli

+0

@irakli В моем случае использование 'form' - это ТОЛЬКО то, что сработало. Не 'input'. Благодарю. – khaverim

11

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

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

действительно, для Mozilla: «Если атрибут autocomplete не указан во входном элементе, браузер использует значение атрибута автозаполнения владельца формы .Имя владельца формы является либо элементом формы, что этот элемент является потомком или элемент формы, идентификатор которого указан атрибутом формы входного элемента. Для получения дополнительной информации см. атрибут автозаполнения в

. " учитывая, что гораздо более эффективная альтернатива jQuery, показанная выше, будет: $ ('form'). attr ('autocomplete', 'off'); – irakli

-2
$('input').attr('autocomplete','off'); 
+0

Это не дает ответа на заданный вопрос. OP специально попросил решение для CSS, также это тот же самый ответ, что и уже существующий. –

1

Благодаря @ahhmarr's решение Я смог решить ту же проблему в моей среде Угловая + 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.

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

Смежные вопросы