Как отключить браузер автозаполнения на веб-формы поле / ввода тега?

голоса
2k

Как отключить autocompleteв основных браузерах для конкретных input(или form field)?

Задан 05/08/2008 в 17:22
источник пользователем
На других языках...                            


61 ответов

голоса
2k

Firefox 30 игнорирует autocomplete="off"пароли, предпочитая запрашивать у пользователя должны вместо того , пароль будет храниться на клиенте. Обратите внимание на следующий комментарий от 5 мая 2014 года:

  • Менеджер паролей всегда подскажет , если он хочет сохранить пароль. Пароли не сохраняются без разрешения пользователя.
  • Мы третий браузер для реализации этого изменения, после IE и Chrome.

Согласно документации разработчика Mozilla атрибут элемента формы autocompleteпредотвращает данные формы из кэшируются в старых браузерах.

<input type="text" name="foo" autocomplete="off" />
Ответил 05/08/2008 d 17:24
источник пользователем

голоса
237

В дополнении к autocomplete=off, вы также можете иметь ваши имена поля формы рандомизированы кодом , который генерирует страницу, возможно, добавив некоторую сеансовую строку в конец названия.

Когда форма отправлена, вы можете лишить эту часть от перед их обработкой на стороне сервера. Это позволит предотвратить веб-браузер от нахождения контекста для вашей области, а также может помочь предотвратить XSRF атаки, поскольку злоумышленник не сможет угадать имена поле для отправки формы.

Ответил 20/10/2008 d 14:36
источник пользователем

голоса
181

Большинство основных браузеров и менеджеров паролей (правильно, имхо) в настоящее время игнорирует autocomplete=off.

Зачем? Многие банки и другие веб - сайты «высокий уровень безопасности» добавили autocomplete=offк их странице входа «в целях безопасности» , но это на самом деле снижает безопасность , поскольку она заставляет человек менять пароли на этих сайтах с высоким уровнем безопасности , чтобы можно было легко запомнить (и , таким образом , трещину) , так как автозаполнение был разбит.

Давно большинство менеджеров паролей начали игнорировать autocomplete=off, и теперь браузеры начинают делать то же самое только имя пользователя / пароль входа.

К сожалению, ошибки в реализации автозаполнения вставить имя пользователя и / или данные пароля в несоответствующие полей формы, вызывая ошибки проверки формы, или, что еще хуже, случайно вставить имена пользователей в поля, которые были намеренно оставлены пустым пользователем.

Что такой веб-разработчик?

  • Если вы можете сохранить все поля пароля на странице самого по себе, это отличный старт, как это кажется, что наличие поля пароля является основным триггером для пользователя / пасс автозаполнения пнуть. В противном случае, прочитайте советы ниже.
  • Safari замечает , что есть 2 поля паролей и отключает автозаполнения в этом случае, предполагая , что это должно быть формой смены пароля, а не форма Логина. Так что не забудьте использовать 2 поля паролей (новые и подтвердить новый) для любых форм , где вы позволяете
  • Chrome 34, к сожалению, будет пытаться автозаполнения полей с пользователем / пасс всякий раз , когда он видит поле пароля. Это очень плохая ошибка , что мы надеемся, что они изменят поведение Safari. Однако, добавив в верхней части формы , кажется, отключить пароль автозаполнения:

    <input type="text" style="display:none">
    <input type="password" style="display:none">
    

Я еще не исследовал IE или Firefox тщательно, но будет рад обновить ответ, если другие данные в комментариях.

Ответил 23/04/2014 d 05:00
источник пользователем

голоса
116

Иногда даже автозаполнение = выкло бы не допустить , чтобы заполнить учетные данные в неправильные поля, но не пользователь или ник поля.

Это временное решение, в дополнение к сообщению apinstein в о поведении браузера.

затруднительное браузер автозаполнения в только для чтения и записи установлен на фокус (нажмите и вкладки)

 <input type="password" readonly  
     onfocus="this.removeAttribute('readonly');"/>

Обновление: Mobile Safari устанавливает курсор в поле, но не показывает виртуальную клавиатуру. New Fix работает как и раньше, но ручки виртуальной клавиатуры:

<input id="email" readonly type="email" onfocus="if (this.hasAttribute('readonly')) {
    this.removeAttribute('readonly');
    // fix for mobile safari to show virtual keyboard
    this.blur();    this.focus();  }" />

Демо https://jsfiddle.net/danielsuess/n0scguv6/

// UpdateEnd

Поскольку браузер автоматически заполняет учетные данные неправильно текстовое поле !?

Я заметил это странное поведение на Chrome и Safari, когда есть пароль поле в той же форме. Я думаю, браузер ищет поле пароля , чтобы вставить сохраненные учетные данные. Затем она автоматически заполняет (только гадать , из - за наблюдение) ближайший textlike-поле ввода, которое появляется перед полем пароля в DOM. В браузере это последний экземпляр , и вы не можете контролировать,

Это только для чтения-фикс выше работал для меня.

Ответил 16/06/2014 d 17:04
источник пользователем

голоса
94
<form name="form1" id="form1" method="post" 
      autocomplete="off" action="http://www.example.com/form.cgi">

Это будет работать в Internet Explorer и Mozilla FireFox, недостатком является то, что он не является стандартным XHTML.

Ответил 05/08/2008 d 17:27
источник пользователем

голоса
54

Как уже сказал, ответ autocomplete="off"

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

Остановочные браузеры хранящих номера кредитных карт не должны быть оставлены пользователям. Слишком многие пользователи даже не понимают, что это проблема.

Это особенно важно , чтобы отключить его на полях для защитных кодов кредитных карт. В этой странице говорится:

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

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

Ответил 23/01/2009 d 22:21
источник пользователем

голоса
50

Решение для Chrome является добавление autocomplete="new-password"к паролю типа входа.

Пример:

<form name="myForm"" method="post">
<input name="user" type="text" />
<input name="pass" type="password" autocomplete="new-password" />
<input type="submit">
</form>

Chrome всегда автозаполнения данных , если он находит коробку типа пароля , просто достаточно , чтобы указать на то поле autocomplete = "new-password".

Это хорошо работает для меня.

Примечание: убедитесь, что с F12, что изменения вступили в силу, во много раз браузеров сохранить страницу в кэше, это дало мне плохое впечатление, что он не работает, но браузер фактически не принесут изменений.

Ответил 24/11/2016 d 17:07
источник пользователем

голоса
29

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

Первое, что нужно воспитывать, что автозаполнение не явно запрещено на форме Войти полей является PCI-DSS неудачу. Кроме того, если локальная обрабатать пользователей скомпрометирован, то любые данные автозаполнения могут быть тривиальным получены злоумышленниками из-за его хранится в незашифрованном виде.

Существует, конечно, аргумент для удобства использования, однако есть очень тонкий баланс, когда речь идет, к которому полю формы должен иметь автозаполнение инвалидов и которые не должны.

Ответил 17/09/2011 d 01:33
источник пользователем

голоса
24

Три варианта: во-первых:

<input type='text' autocomplete='off' />

Во-вторых:

<form action='' autocomplete='off'>

В-третьих (JavaScript-код):

$('input').attr('autocomplete', 'off');
Ответил 19/03/2013 d 11:05
источник пользователем

голоса
18

Я пытался бесконечные решения, а затем я нашел это:

Вместо того , чтобы autocomplete="off"просто использоватьautocomplete="false"

Как просто, как это, и он работает как шарм в Google Chrome, как хорошо!

Ответил 01/05/2015 d 05:56
источник пользователем

голоса
17

Просто установите autocomplete="off". Существует очень хорошая причина для этого: Вы хотите обеспечить свою собственную функциональность автозаполнения!

Ответил 05/08/2008 d 17:32
источник пользователем

голоса
16

Ни одно из решений не работал для меня в этом разговоре.

Я , наконец , понял, чистый HTML - решение , которое не требует нет Javascript , работает в современных браузерах (кроме IE, там было по крайней мере один улов, не так ли?), И не требует , чтобы отключить автозаполнение для всей формы.

Просто отключить автозаполнение на , formа затем включите его для любого inputвы хотите , чтобы работать в форме. Например:

<form autocomplete="off">
    <!-- these inputs will not allow autocomplete and chrome 
         won't highlight them yellow! -->
    <input name="username"  />
    <input name="password" type="password" />
    <!-- this field will allow autocomplete to work even 
         though we've disabled it on the form -->
    <input name="another_field" autocomplete="on" />
</form>
Ответил 15/08/2013 d 20:02
источник пользователем

голоса
16

Я думаю , что autocomplete=offподдерживается в HTML 5.

Спросите себя, почему вы хотите сделать это, хотя - это может иметь смысл в некоторых ситуациях, но не делают это только ради того, делать это.

Это менее удобно для пользователей , и даже не проблема безопасности в OS X (упоминается Сорен ниже). Если вы беспокоитесь о людях , имеющих свои пароли украдены удаленно - нажатие клавиши регистратор все еще может сделать это , даже если ваше приложение использует autcomplete=off.

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

Ответил 24/02/2011 d 00:24
источник пользователем

голоса
16

Мы на самом деле использовать SASB идею «s для одного сайта. Это было медицинским веб - приложение программного обеспечения для запуска кабинета врача. Тем не менее, многие из наших клиентов были хирурги , которые использовали множество различных рабочих станций, в том числе пола-общественных терминалов. Таким образом, они хотели , чтобы убедиться , что врач , который не понимает , прикосновенность автоматически сохраняются пароли или не обращая внимания не могут случайно оставить свою информацию для входа в легко доступном месте . Конечно, это было до того, идея приватного просмотра, которая начинает фигурировать в IE8, FF3.1 и т.д. Тем не менее , многие врачи вынуждены использовать старые школьные браузеры в больницах с ИТ , которые не будут меняться.

Таким образом, у нас была страница Войти генерировать случайные имена полей, которые будут работать только на этот пост. Да, это менее удобно, но это просто попав пользователя над головой о не хранить регистрационную информацию на публичных терминалах.

Ответил 16/09/2008 d 16:35
источник пользователем

голоса
16

На родственном или на самом деле, на совершенно противоположную ноте -

«Если вы пользователь вышеупомянутой формы и хотите повторно включить функцию автозаполнения, использовать„запомнить пароль“букмарклет с этой страницы Букмарклеты . Она удаляет все autocomplete="off"атрибуты из всех форм на странице. Продолжайте бороться с хорошей борьбой! "

Ответил 08/09/2008 d 20:29
источник пользователем

голоса
13

Был нестандартный способ сделать это (я думаю, что Mozilla и Internet Explorer до сих пор поддерживает его), но баловаться с ожиданиями пользователей является плохой идеей.

Если пользователь вводит данные своей кредитной карты в форме, а затем давайте кто-то использовать этот браузер, это не ваша забота. :)

Ответил 05/08/2008 d 17:26
источник пользователем

голоса
10

Добавление

autocomplete="off"

в виде тега будет отключить автозаполнение браузера (что набранный ранее в этой области) из всех inputполей в этой конкретной форме.

Проверено на:

  • Firefox 3.5, 4 BETA
  • Internet Explorer 8
  • Хром
Ответил 11/02/2011 d 06:14
источник пользователем

голоса
9

Добавление autocomplete="off"не собирается резать.

Изменение атрибута типа входного сигнала в type="search".
Google не применяется автозаполнение к вводам с типом поиска.

Ответил 28/10/2015 d 16:32
источник пользователем

голоса
9

Для того, чтобы избежать недопустимого XHTML вы можете установить этот атрибут с помощью JavaScript. Пример использования JQuery:

<input type="text" class="noAutoComplete" ... />

$(function() {
    $('.noAutoComplete').attr('autocomplete', 'off');
});

Проблема заключается в том, что пользователи без JavaScript будет делать получить функциональность автозаполнения.

Ответил 12/12/2010 d 19:34
источник пользователем

голоса
8

Я не могу поверить, что это еще вопрос, так долго после того, как было сообщено. Вышеуказанные решения не работают для меня, как сафари, казалось, знал, когда элемент не отображается или вне экрана, однако следующее сделал работу для меня:

<div style="height:0px; overflow:hidden; ">
  Username <input type="text" name="fake_safari_username" >
  Password <input type="password" name="fake_safari_password">
</div>

Надеюсь, что это полезно для кого-то!

Ответил 23/04/2016 d 11:02
источник пользователем

голоса
8

Немного поздно к игре ... но я столкнулся с этой проблемой и попытался несколько неудач, но это работает для меня найти на MDN

В некоторых случаях браузер будет держать предлагая значения AutoCompletion даже если атрибут автозаполнения отключена. Это неожиданное поведение может быть весьма загадочным для разработчиков. Хитрость, чтобы действительно заставить не-завершения, чтобы назначить случайную строку для атрибута, как так:

autocomplete="nope"
Ответил 22/03/2016 d 19:38
источник пользователем

голоса
8

Это вопрос безопасности, браузеры игнорируют в настоящее время. Браузеры определить и содержание магазинов с использованием имен ввода, даже если разработчики считают информация чувствительна и не должны быть сохранены. Создание ввод имя отличается от 2-х запросов будет решать эту проблему (но по-прежнему будет сохраняться в кэше браузера, и будет также увеличить кэш браузера). Попросите пользователя активировать или деактивировать опции в настройках своего браузера не является хорошим решением. Проблема может быть установлена ​​во внутреннем интерфейсе.

Вот мое исправление. Подход, который я реализовал в своей структуре. Все элементы автозаполнения генерируются с скрытым входом, как это:

<? $r = rmd5(rand().mocrotime(TRUE)); ?>
<form method="POST" action="./">
    <input type="text" name="<? echo $r; ?>" />
    <input type="hidden" name="__autocomplete_fix_<? echo $r; ?>" value="username" />
    <input type="submit" name="submit" value="submit" />
</form>

Сервер затем процесс почтового переменные, как это:

foreach ($_POST as $key => $val)
{
    if(preg_match('#^__autocomplete_fix_#', $key) === 1){
        $n = substr($key, 19);
        if(isset($_POST[$n]))$_POST[$val] = $_POST[$n];
    }
}

Значение можно получить, как обычно,

var_dump($_POST['username']);

И браузер не будет в состоянии предложить информацию из предыдущего запроса или от предыдущих пользователей.

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

Ответил 02/06/2015 d 20:37
источник пользователем

голоса
8

попробуйте это тоже , если только autocomplete="off"не работает:

autocorrect="off" autocapitalize="off" autocomplete="off"
Ответил 04/12/2012 d 19:24
источник пользователем

голоса
8

Используйте нестандартное имя и идентификатор для полей, так что вместо «имя» есть «name_». Браузеры будут не видеть его как поле имени. Самая лучшая часть о том, что вы можете сделать это в некоторых, но не во всех областях, и он будет автоматически заполнит некоторые, но не все поля.

Ответил 05/08/2008 d 17:27
источник пользователем

голоса
7

Ни один из писак упомянутых здесь работал для меня в Chrome. Там в обсуждении этого вопроса здесь: https://code.google.com/p/chromium/issues/detail?id=468153#c41

Добавление этого внутри <form>работ (по крайней мере на данный момент):

<div style="display: none;">
    <input type="text" id="PreventChromeAutocomplete" name="PreventChromeAutocomplete" autocomplete="address-level4" />
</div>
Ответил 02/07/2015 d 10:40
источник пользователем

голоса
6

Лучшее решение:

Запрет автозаполнения имени пользователя (или адрес электронной почты) и пароль:

<input type="email" name="email"><!-- Can be type="text" -->
<input type="password" name="password" autocomplete="new-password">

Предотвратить автозавершения поле:

<input type="text" name="field" autocomplete="nope">

Объяснение: autocompleteпродолжает работать <input>, autocomplete="off"не работает, но вы можете изменить offна произвольную строку, как nope.

Работает в:

  • Хром: 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63 и 64

  • Firefox: 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57 и 58

Ответил 20/03/2018 d 04:31
источник пользователем

голоса
6

Попробуйте добавить

OnFocus только для чтения = "this.removeAttribute ( 'только для чтения');"

в дополнении к

автозаполнения = «выключено»

на вход (ы) , которые вы не хотите запоминать данные формы ( username, passwordи т.д.) , как показано ниже:

<input type="text" name="UserName" autocomplete="off" readonly 
    onfocus="this.removeAttribute('readonly');" >

<input type="password" name="Password" autocomplete="off" readonly 
    onfocus="this.removeAttribute('readonly');" >

Испытано на последние версии основных браузеров , то есть Google Chrome, Mozilla Firefox, Microsoft Edgeи т.д. , и работать без каких - либо проблем. Надеюсь это поможет...

Ответил 01/11/2017 d 13:26
источник пользователем

голоса
6

Это работает для меня.

<input name="pass" type="password" autocomplete="new-password" />

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

Ответил 30/12/2016 d 15:05
источник пользователем

голоса
5

Так вот это:

function turnOnPasswordStyle() {
  $('#inputpassword').attr('type', "password");
}
<input oninput="turnOnPasswordStyle()" id="inputpassword" type="text">

Ответил 29/05/2016 d 19:57
источник пользователем

голоса
5

Вы можете использовать на входе.

Например;

<input type=text name="test" autocomplete="off" />
Ответил 02/11/2012 d 18:00
источник пользователем

голоса
4

Вы можете просто положить autocomplete="off"в HTML таких областях , как следующий код.

<input type="text" name="" value="" autocomplete="off" />
Ответил 12/05/2016 d 10:53
источник пользователем

голоса
4

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

Ответил 25/02/2016 d 15:27
источник пользователем

голоса
4

Хром планирует поддержать это .

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

хром обсуждение

<input type='search' name="whatever" />

чтобы быть совместимыми с светлячок, использовать обычное автозаполнение = «выключен»

<input type='search' name="whatever" autocomplete='off' />
Ответил 10/12/2015 d 02:21
источник пользователем

голоса
3

Многие современные браузеры не поддерживают автозаполнение = «OFF» для входа в полях больше. autocomplete="new-password"является wokring вместо, больше информации MDN документов

Ответил 21/12/2017 d 04:33
источник пользователем

голоса
3

Я использую это TextMode="password" autocomplete="new-password"и в загрузке страницы в ASPXtxtPassword.Attributes.Add("value", '');

Ответил 14/03/2017 d 09:35
источник пользователем

голоса
3

Моя проблема была в основном автозаполнения с Chrome, но я думаю, что это, вероятно, более проблематичным, чем автозаполнения.

Уловка: с помощью таймера, чтобы сбросить форму и установить поле пароля к пустому. Длительность 100мс кажется минимальным для того, чтобы работать.

$(document).ready(function() {
    setTimeout(function() {
        var $form = $('#formId');
        $form[0].reset();
        $form.find('INPUT[type=password]').val('');
    }, 100);
});
Ответил 12/07/2016 d 15:29
источник пользователем

голоса
3

Ответ dsuess отвечал с ReadOnly был очень умным и работал. Но , как я использую boostrap, поле только для чтения входа было - пока не будет сфокусировано - отмечено серым фоном. В то время загрузки документа, вы можете обмануть браузер просто блокировки и разблокировки входа.

Таким образом, у меня была идея реализовать это в решение JQuery:

    jQuery(document).ready(function () {
        $("input").attr('readonly', true);
        $("input").removeAttr('readonly');
   });
Ответил 16/06/2016 d 10:43
источник пользователем

голоса
3

Если ваш вопрос, имеющее поле пароля автоматического завершения, то вы можете найти это полезным ...

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

<!-- This is a fake password input to defeat the browser's autofill behavior -->
<input type="password" id="txtPassword" style="display:none;" />
<!-- This is the real password input -->
<input type="password" id="txtThisIsTheRealPassword" />

Обратите внимание, что в Firefox и IE, это было достаточно просто поместить любой ввод типа пароля перед фактическими один, но Chrome раскусили, что и заставили меня на самом деле назвать фальшивый ввод пароля (давая ему очевидный пароль идентификатор), чтобы получить его «укусить». Я использовал класс для реализации стиля вместо того, чтобы использовать встроенный стиль, чтобы попробовать, что если выше не работает по какой-то причине.

Ответил 27/04/2016 d 20:44
источник пользователем

голоса
3

Это то , что мы называем автозаполнения текстового поля. введите описание изображения здесь Мы можем отключить автозаполнение в текстовое поле в 2 ways-

  1. Броузером этикетки
  2. По кодексу

    Чтобы отключить в браузере перейдите к настройке

    Для dissable в просмотре перейдите к настройке

Перейти к заранее настройке и снимите флажок, а затем восстановить.

Перейти к заранее настройке и снимите флажок, а затем восстановить.

Если вы хотите отключить в кодировке метки , которые можно сделать , как Последующие
Использование AutoCompleteType="Disabled":

<asp:TextBox runat="server" ID="txt_userid" AutoCompleteType="Disabled"></asp:TextBox>  

По Настройка формы autocomplete="off":

<asp:TextBox runat="server" ID="txt_userid" autocomplete="off"></asp:TextBox> 

По Настройка формы autocomplete="off":

<form id="form1" runat="server" autocomplete="off">  
    //your content
</form>  

Используя код .cs страницы

protected void Page_Load(object sender, EventArgs e)  
    {  
    if(!Page.IsPostBack)  
    {  


        txt_userid.Attributes.Add("autocomplete", "off");  

    }  
}  

По Использование Jquery

head runat="server">  
<title></title>  
<script src="Scripts/jquery-1.6.4.min.js"></script>  
<script type="text/javascript">  
    $(document).ready(function () {  
        $('#txt_userid').attr('autocomplete', 'off');  

    });  

</script>  
Ответил 19/03/2016 d 05:05
источник пользователем

голоса
3
<script language="javascript" type="text/javascript">
    $(document).ready(function () {
        try {
            $("input[type='text']").each(function(){
                           $(this).attr("autocomplete","off");
                        });
        }
        catch (e)
        { }
    });

</script>
Ответил 16/11/2015 d 13:02
источник пользователем

голоса
2

Я решил бесконечный бой с Google Chrome с использованием случайных символов.

<input name="name" type="text" autocomplete="rutjfkde">

Надеюсь, что это поможет другим людям.

Ответил 04/08/2018 d 14:22
источник пользователем

голоса
2

Google Chrome игнорирует autocomplete="off"атрибут для определенных входов, в том числе паролей входов и общих входов , обнаруженных по имени.

Например, если у вас есть вход с именем address, то Chrome предоставит предложения автозаполнения из адресов , введенных на других сайтах, даже если вы скажете это не :

<input type="string" name="address" autocomplete="off">

Если вы не хотите Chrome, чтобы сделать это, то вы можете переименовать или пространство имен имени поля формы в:

<input type="string" name="mysite_addr" autocomplete="off">

Если вы не возражаете автозаполнение значения, которые ранее были введены на вашем сайте, то вы можете оставить автоподсказку. Пространства имен имя поля должно быть достаточно, чтобы предотвратить значения запоминаются с других сайтов, от появления.

<input type="string" name="mysite_addr" autocomplete="on">
Ответил 22/06/2018 d 06:10
источник пользователем

голоса
2

Это не представляется возможным для достижения этой цели без использования боковой комбинации клиента и на стороне сервера код.

Для того, чтобы убедиться в том, что пользователь должен заполнить форму каждый раз без автозаполнения я использую следующие методы:

  1. Генерировать имена полой формы на сервере и использовать скрытые поля ввода, чтобы сохранить эти имена, так что, когда передается на сервер стороны коды сервера могут использовать сгенерированные имена для доступа к значениям полей. Это должно остановить пользователя от опции для автоматического заполнения полей.

  2. Поместите три экземпляра каждого поля формы на форму и скрыть первые и последние поля каждого набора с помощью CSS, а затем отключить их после загрузки страницы с помощью JavaScript. Это предотвращает браузер от заполнения полей автоматически.

Вот скрипку , который демонстрирует JavaScript, CSS и HTML , как описано в # 2 https://jsfiddle.net/xnbxbpv4/

JavaScript:

$(document).ready(function() {
    $(".disable-input").attr("disabled", "disabled");
});

CSS:

.disable-input {
  display: none;
}

HTML:

<form>
<input type="email" name="username" placeholder="username" class="disable-input">
<input type="email" name="username" placeholder="username">
<input type="email" name="username" placeholder="username" class="disable-input">
<br>
<input type="password" name="password" placeholder="password" class="disable-input">
<input type="password" name="password" placeholder="password">
<input type="password" name="password" placeholder="password" class="disable-input">
<br>
<input type="submit" value="submit">
</form>

Вот грубый пример того, что код сервера с помощью asp.net с бритвой будет способствовать # 1

модель:

public class FormModel
{
    public string Username { get; set; }
    public string Password { get; set; }
}

контроллер:

public class FormController : Controller
{
    public ActionResult Form()
    {
        var m = new FormModel();

        m.Username = "F" + Guid.NewGuid().ToString();
        m.Password = "F" + Guid.NewGuid().ToString();

        return View(m);
    }

    public ActionResult Form(FormModel m)
    {
        var u = Request.Form[m.Username];
        var p = Request.Form[m.Password];

        // todo: do something with the form values

        ...

        return View(m);
    }
}

Посмотреть:

@model FormModel

@using (Html.BeginForm("Form", "Form"))
{
    @Html.HiddenFor(m => m.UserName)
    @Html.HiddenFor(m => m.Password)

    <input type="email" name="@Model.Username" placeholder="username" class="disable-input">
    <input type="email" name="@Model.Username" placeholder="username">
    <input type="email" name="@Model.Username" placeholder="username" class="disable-input">
    <br>
    <input type="password" name="@Model.Password" placeholder="password" class="disable-input">
    <input type="password" name="@Model.Password" placeholder="password">
    <input type="password" name="@Model.Password" placeholder="password" class="disable-input">
    <br>
    <input type="submit" value="submit">
}
Ответил 28/02/2017 d 10:25
источник пользователем

голоса
2

Safari не меняет свое мнение о автозаполнения , если вы установили autocomplete="off"динамически из JavaScript. Однако он будет уважать , если вы сделаете это на основе каждого поля.

$(':input', $formElement).attr('autocomplete', 'off');
Ответил 01/11/2015 d 10:28
источник пользователем

голоса
2

Я знаю , что это старый пост, но это может быть важно знать , что Firefox (я думаю только Firefox) использует значение , называемое ismxfilledчто в основном заставляют автозаполнения.

ismxfilled="0" для OFF

или

ismxfilled="1" для ON

Ответил 13/08/2015 d 18:22
источник пользователем

голоса
1

Попробуй это :

<input type='text' autocomplete='off' />
Ответил 27/05/2017 d 08:13
источник пользователем

голоса
1

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

Что касается Internet Explorer 11, есть функция безопасности в месте, которое может быть использовано для блокирования автозаполнения. Вот как это работает:

Любое значение формы ввода, которая модифицирована в JavaScript ПОСЛЕ того, как пользователь уже вошел он помечен как неподходящий для автозаполнения.

Эта функция обычно используются для защиты пользователей от вредоносных веб-сайтов, которые хотят изменить свой пароль после ввода его или тому подобного.

Тем не менее, вы можете вставить один специальный символ в начале строки пароля блокировать автозаполнения. Этот специальный символ может быть обнаружен и удален позже в трубопроводе.

Ответил 17/11/2016 d 17:41
источник пользователем

голоса
1

Обходной не вставить в поле пароля в DOM, прежде чем пользователь хочет изменить пароль. Это может быть применимо в некоторых случаях:

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

Таким образом, в этом случае, автозаполнение из менеджера паролей становится двойной проблемой, потому что вход не будет даже виден пользователю.

Решение было иметь триггер флажок ли вставлен в поле пароля в DOM, а не только его видимость.

Реализация Псевдо для AngularJS:

<input type="checkbox" ng-model="createPassword">
<input ng-if="changePassword" type="password">
Ответил 24/10/2016 d 09:16
источник пользователем

голоса
1

Я использую следующий JQuery фрагмент кода:

// Prevent input autocomplete
$.fn.preventAutocomplete = function() {
    this.each(function () {
        var $el = $(this);
        $el
            .clone(false, false)
            .insertBefore($el)
            .prop('id', '')
            .hide()
        ;
    });
};

И не только $('#login-form input').preventAutocomplete();

Ответил 02/09/2016 d 10:14
источник пользователем

голоса
0

Для того, чтобы предотвратить браузер автоматически заполняться сохраненные учетные данные для входа на сайт пользователя, поместите поле ввода текста и пароль в верхней части формы с не пустыми значениями и стиль «положение: абсолютный; сверху: -999px; слева: -999px» установить, чтобы скрыть поля.

<form>
  <input type="text" name="username_X" value="-" tabindex="-1" aria-hidden="true" style="position: absolute; top: -999px; left:-999px" />
  <input type="password" name="password_X" value="-" tabindex="-1" aria-hidden="true" style="position: absolute; top: -999px; left:-999px" />
  <!-- Place the form elements below here. -->
</form>

Важно, чтобы текстовое поле предшествует поле пароля. В противном случае автоматическое заполнение не может быть предотвращено в некоторых случаях.

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

Важно, чтобы эти два поля до «реального» типа поля пароля (ов) в форме.

Для новых браузеров, которые HTML 5.3 уступчивого значение атрибута автозаполнения «новый пароль» должно работать.

<form>
  <input type="text" name="username" value="" />
  <input type="password" name="password" value="" autocomplete="new-password" />
</form>

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

<form>
  <div style="display:none">
    <input type="text" readonly tabindex="-1" />
    <input type="password" readonly tabindex="-1" />
  </div>
  <!-- Place the form elements below here. -->
  <input type="text" name="username" value="" />
  <input type="password" name="password" value="" autocomplete="new-password" />
</form>
Ответил 07/07/2018 d 18:20
источник пользователем

голоса
0

Чтобы решить эту проблему, я использовал некоторые приемы CSS и следующие работы для меня.

input {
    text-security:disc;
    -webkit-text-security:disc;
    -mox-text-security:disc;
}

Пожалуйста , прочитайте эту статью для более подробно.

Ответил 11/05/2018 d 13:19
источник пользователем

голоса
0

Я был в состоянии остановить Chrome 66 из автозаполнения путем добавления двух поддельных входов и давая им позиции абсолютного:

<form style="position: relative">
  <div style="position: absolute; top: -999px; left: -999px;">
    <input name="username" type="text" />
    <input name="password" type="password" />
  </div>
  <input name="username" type="text" />
  <input name="password" type="password" />

Сначала я попытался добавить display:none;к входам , но Chrome игнорировал их и autofilled видимых из них.

Ответил 08/05/2018 d 22:07
источник пользователем

голоса
0

Нет поддельные входов, нет Javascript!

Там нет никакого способа сделать отключить автозаполнение последовательно во всех браузерах. Я перепробовал все различные предложения и ни один из них не работает во всех браузерах. Единственный способ не использует ввод пароля на всех. Вот что я придумал:

<style type="text/css">
    @font-face {
        font-family: 'PasswordDots';
        url('/assets/font/password-dots.woff2?v=1.0.0') format('woff2');
        font-weight: normal;
        font-style: normal;
    }

    input.password {
        font-family: 'PasswordDots' !important;
        font-size: 8px !important;
    }
</style>

<input class="password" type="text" spellcheck="false" />

Загрузка: пароль-dots.woff2

Вот как мой окончательный результат выглядит следующим образом:

Пароль Mask

Отрицательный побочный эффект заключается в том, что это возможно, чтобы скопировать простой текст от входа, хотя это должно быть возможно предотвратить, что с некоторыми JS.

Ответил 13/04/2018 d 06:35
источник пользователем

голоса
0

Наконец я получил решение сначала добавить 2 скрытых текстовых полей

и просто добавить угловую директиву, как это

 (function () {

    'use strict';

    appname.directive('changePasswordType', directive);

    directive.$inject = ['$timeout', '$rootScope',  '$cookies'];

    function directive($timeout,  $rootScope, $cookies) {
        var directive = {
            link: link,
            restrict: 'A'
        };

        return directive;

        function link(scope,element) {
            var process = function () {
                var elem =element[0];
                elem.value.length > 0 ? element[0].setAttribute("type", "password") :
                element[0].setAttribute("type", "text");
            }

            element.bind('input', function () {
                process();
            });

            element.bind('keyup', function () {
                process();
            });
        }
    }
})()

затем использовать его в текстовом поле, где вам нужно, чтобы предотвратить автоматическое заполнение

    <input type="text" style="display:none">\\can avoid this 2 lines
    <input type="password" style="display:none">
    <input type="text"  autocomplete="new-password" change-password-type>

NB: Не забудьте включить JQuery и установить type ="text"первоначально

Ответил 26/03/2018 d 12:07
источник пользователем

голоса
0

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

Ответил 19/03/2018 d 12:18
источник пользователем

голоса
0

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

Например:

<input type=text name="test" autocomplete="off" />

если приведенный выше код не работает, то попробуйте добавить эти атрибуты autocapitalize = «выключено» автозаполнения = «выключено»

Ответил 03/03/2018 d 00:47
источник пользователем

голоса
0

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

Например:

<input type=text name="test" autocomplete="off" />

если приведенный выше код не работает, то попробуйте добавить эти атрибуты также

autocapitalize = «выключено» автозаполнения = «выключено»

или

Изменение атрибута входного типа для типа = «поиск». Google не применяется автозаполнение к вводам с типом поиска.

Ответил 03/03/2018 d 00:35
источник пользователем

голоса
0

Исправлена. Просто нужно добавить выше реального поля ввода

https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion - MDN https://medium.com/paul-jaworski/turning-off-autocomplete-in-chrome-ee3ff8ef0908 - средний протестировано на EDGE, Chrome (последняя V63), Firefox Quantum (57.0.4 64-бит), Firefox (52.2.0) поддельные полей обходной путь для хрома / опера автозаполнения получения бракованного поля

 const fakeInputStyle = {opacity: 0, float: 'left', border: 'none', height: '0', width: '0'}

 <input type="password" name='fake-password' autoComplete='new-password' tabIndex='-1' style={fakeInputSyle} />

<TextField
  name='userName'
  autoComplete='nope'
  ... 
/>

<TextField
      name='password'
      autoComplete='new-password'
      ... 
    />
Ответил 19/01/2018 d 12:57
источник пользователем

голоса
0

Ни один из предоставленных ответов не работал на всех браузерах я тестировал. Опираясь на уже предоставленные ответы, это то , что я закончил с, (проверено) на Chrome 61 , Microsoft Гурт 40 (EdgeHTML 15), IE 11 , Firefox 57 , Opera 49 и Safari 5.1 . Это дурацкое в результате многих испытаний; Однако это не работает для меня.

<form autocomplete="off">
    ...
    <input type="password" readonly autocomplete="off" id="Password" name="Password" onblur="this.setAttribute('readonly');" onfocus="this.removeAttribute('readonly');" onfocusin="this.removeAttribute('readonly');" onfocusout="this.setAttribute('readonly');" />
    ...
</form> 

<script type="text/javascript">
    $(function () {           
        $('input#Password').val('');
        $('input#Password').on('focus', function () {
        if (!$(this).val() || $(this).val().length < 2) {
            $(this).attr('type', 'text');
        }
        else {
            $(this).attr('type', 'password');
        }
    });
    $('input#Password').on('keyup', function () {
        if (!$(this).val() || $(this).val().length < 2) {
            $(this).attr('type', 'text');
        }
        else {
            $(this).attr('type', 'password');
        }
    });
    $('input#Password').on('keydown', function () {
        if (!$(this).val() || $(this).val().length < 2) {
            $(this).attr('type', 'text');
        }
        else {
            $(this).attr('type', 'password');
        }
    });
</script>
Ответил 22/11/2017 d 08:28
источник пользователем

голоса
0

автозаполнения = «выключено» не работает для меня, во всяком случае я установить атрибут значение поля ввода в пространстве , т.е. , <input type='text' name='username' value=" ">что входной набор символов по умолчанию в пространстве, и так как имя пользователя было пустым , пароль был очищен слишком.

Ответил 12/03/2017 d 19:17
источник пользователем

голоса
-14

Почему бы вам сделать жизнь вашего пользователя менее удобно?

«Пароли / данные кредитной карты / и т.д. , не должны быть сохранены» плохой аргумент: с автозаполнения на браузеры в Mac OS X хранить эти ценности в зашифрованной базе данных с правами для каждого приложения. И наоборот, что реалистический эффект autocomplete=off? Пользователь собирается записать его в незашифрованном текстовом файле, или еще лучше, на пост-это записке , приложенной к экрану.

Хорошо , что есть букмарклеты , как один Антти упоминалось, и патчи , чтобы сделать двигатель игнорировать атрибут вообще .

Серьезно, я призываю вас пересмотреть с помощью этого атрибута. Это не выгодно никому.

Ответил 08/09/2008 d 20:42
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more