Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

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

Edit:

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

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

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

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>

Ответ 2

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

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

или в jquery

$(":input").attr("autocomplete","off"); 

Ответ 3

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

Ответ 4

Есть 2 решения этой проблемы. Я проверил следующий код в Google Chrome v36. Недавняя версия Google Chrome заставляет Autofill независимо от 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);
            });

Он удаляет атрибуты "имя" и "id" из элементов и назначает их обратно через 1 мс.

Ответ 5

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

    <script type="text/javascript">
        var c = document.getElementById("<%=TextBox1.ClientID %>");
        c.select =
        function (event, ui) 
        { this.value = ""; return false; }
    </script>

Ответ 6

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

Ответ 7

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

asp:TextBox runat="server" ID="txtUsername" />
<asp:TextBox runat="server" ID="txtPassword" />
<script>
    $("#txtPassword").focus(function () {
        $("#txtPassword").prop('type', 'password');
    });
</script>