Как отключить автозаполнение в текстовых вводах браузера выборочно через код?
Можно ли выборочно отключить функцию автозаполнения в текстовых полях с помощью кода?
Я разрабатываю свой собственный код в ASP.Net AJAX для поиска предложения в базе данных, и я хотел бы запретить появление предложений браузера, когда пользователь начнет вводить текстовое поле.
Я ищу решение, которое работает в самых современных браузерах (IE 7 и 8, Firefox, Safari и Chrome). Это нормально, если обходной путь находится в Javascript.
Ответы
Ответ 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>