24

是否可以使用代码选择性地禁用文本字段中的自动填充功能?

我正在 ASP.Net AJAX 中开发我的自定义代码以在数据库中搜索建议,并且我想防止在用户开始在文本框中输入时出现浏览器建议。

我正在寻找适用于最现代浏览器(IE 7 和 8、Firefox、Safari 和 Chrome)的解决方案。如果解决方法是在 Javascript 中,那没关系。

4

9 回答 9

31

查看自动完成 HTML 属性(在表单或输入标签上)。

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

W3C > 自动完成属性

编辑:

如今 - 从评论中 - 网络浏览器并不总是尊重自动完成标签定义的行为。这种不尊重可能会被一些 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>

于 2009-12-18T17:03:58.760 回答
11

您可以将其放入您的输入中:

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

或在jQuery中

$(":input").attr("autocomplete","off"); 
于 2009-12-18T17:04:16.383 回答
6

这个问题有2个解决方案。我在 Google Chrome v36 上测试了以下代码。最新版本的谷歌浏览器强制自动填充,不管Autocomplete=off.Some 以前的黑客不再起作用(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”属性,并在 1ms 后将它们分配回来。

于 2014-08-12T07:04:13.677 回答
4

autocomplete=off向html元素添加属性input应该可以做到这一点。

于 2009-12-18T17:03:20.820 回答
1

添加AutoCompleteType="Disabled"到您的文本框

于 2012-03-04T11:55:49.597 回答
1

这应该适用于每个浏览器

    <script type="text/javascript">
        var c = document.getElementById("<%=TextBox1.ClientID %>");
        c.select =
        function (event, ui) 
        { this.value = ""; return false; }
    </script>
于 2013-12-19T13:45:53.840 回答
1

我的解决方法是使密码字段成为一个普通的文本框,然后使用 jquery 将其变成焦点密码字段:

<asp:TextBox runat="server" ID="txtUsername" />
<asp:TextBox runat="server" ID="txtPassword" />
<script>
    $("#txtPassword").focus(function () {
        $("#txtPassword").prop('type', 'password');
    });
</script>
于 2017-03-22T09:33:22.570 回答
0

我已经在 Edge 和 Firefox 中成功测试了这一点。

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

适用于常规文本输入。

对于密码,您需要使用 autocomplete="new-password"

<input type="password" id="cc1" name="cc" autocomplete="new-password">

根据Mozilla 开发网络

于 2021-04-23T06:28:11.890 回答
-1

Place below code above your username control. This will work in call the browser.

<div style="margin-left:-99999px; height:0px;width:0px;">
<input type="text" id="cc" name="cc" autocomplete="off">
<input type="password" id="cc1" name="cc" autocomplete="off">
</div>

于 2020-12-02T10:17:38.240 回答