Как выборочно отключить автозаполнение в браузере при вводе текста через код? - PullRequest
23 голосов
/ 18 декабря 2009

Можно ли выборочно отключить функцию автозаполнения в текстовых полях с помощью кода?

Я разрабатываю свой собственный код в ASP.Net AJAX для поиска предложения в базе данных, и я хотел бы предотвратить появление предложений браузера, когда пользователь начинает вводить текстовое поле.

Я ищу решение, которое работает в самых современных браузерах (IE 7 и 8, Firefox, Safari и Chrome). Это нормально, если обходной путь находится в Javascript.

Ответы [ 7 ]

30 голосов
/ 18 декабря 2009

Посмотрите на атрибут автозаполнения HTML (в тегах формы или ввода).

<form [...] autocomplete="off"> [...] </form>

W3C> Атрибут автозаполнения

Edit:

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

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

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

jQuery( function()
{
  $("input[autocomplete=off]").val( "" );
} );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<form method="post" action="">
  <div class="form-group">
    <label for="username">Username</label>
    <input type="text" id="username" name="username" value="John" autocomplete="off">
  </div>
  <div class="form-group">
    <label for="password">Password</label>
    <input type="password" id="password" name="password" value="qwerty" autocomplete="off">
  </div>
  <input type="submit" value="Login">
</form>
11 голосов
/ 18 декабря 2009

Вы можете поместить его в свои входы:

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

или в jquery

$(":input").attr("autocomplete","off"); 
5 голосов
/ 12 августа 2014

Есть 2 решения этой проблемы. Я проверил следующий код в Google Chrome v36. Последняя версия Google Chrome вызывает автозаполнение независимо от Autocomplete=off. Некоторые из предыдущих хаков больше не работают (34+ версии)

Решение 1:

Поставьте следующий код под тегом <form ..>.

<form id="form1" runat="server" >
<input style="display:none" type="text" name="fakeusernameremembered"/>
<input style="display:none" type="password" name="fakepasswordremembered"/>

...

Подробнее

Решение 2:

$('form[autocomplete="off"] input, input[autocomplete="off"]').each(function () {

                var input = this;
                var name = $(input).attr('name');
                var id = $(input).attr('id');

                $(input).removeAttr('name');
                $(input).removeAttr('id');

                setTimeout(function () {
                    $(input).attr('name', name);
                    $(input).attr('id', id);
                }, 1);
            });

Удаляет атрибуты «name» и «id» из элементов и присваивает их обратно через 1 мс.

4 голосов
/ 18 декабря 2009

Добавление атрибута autocomplete=off в элемент html input должно сделать это.

1 голос
/ 19 декабря 2013

Это должно работать в каждом браузере

    <script type="text/javascript">
        var c = document.getElementById("<%=TextBox1.ClientID %>");
        c.select =
        function (event, ui) 
        { this.value = ""; return false; }
    </script>
0 голосов
/ 22 марта 2017

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

asp:TextBox runat="server" ID="txtUsername" />
<asp:TextBox runat="server" ID="txtPassword" />
<script>
    $("#txtPassword").focus(function () {
        $("#txtPassword").prop('type', 'password');
    });
</script>
0 голосов
/ 04 марта 2012

Добавьте AutoCompleteType="Disabled" в текстовое поле

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...