如何通过代码有选择地禁用浏览器文本输入中的自动填充?

hol*_*ira 23 html browser asp.net autofill

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

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

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

Jul*_*let 30

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

<form [...] autocomplete="off"> [...] </form>
Run Code Online (Sandbox Code Playgroud)

W3C>自动完成属性

编辑:

如今 - 从评论中 - Web浏览器并不总是尊重自动完成标记定义的行为.这种不尊重可以用一些JavaScript代码包围,但是在使用它之前你应该考虑一下你想做什么.

首先,字段将在页面加载期间填充,并且只有在页面加载后才会清空.用户将质疑为什么该字段已被清空.

其次,这将重置其他Web浏览器机制,例如当您返回上一页时自动填充字段.

jQuery( function()
{
  $("input[autocomplete=off]").val( "" );
} );
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)


Ell*_*ott 11

你可以把它放入你的输入:

<input type="text" name="off" autocomplete="off">
Run Code Online (Sandbox Code Playgroud)

或者在jquery

$(":input").attr("autocomplete","off"); 
Run Code Online (Sandbox Code Playgroud)


San*_*ile 5

这个问题有2个解决方案.我在Google Chrome v36上测试了以下代码.最近版本的谷歌浏览器强制自动填充Autocomplete=off无论如何.以前的一些黑客攻击不再适用(34个以上版本)

解决方案1:

将以下代码放在under <form ..>标签下.

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

...
Run Code Online (Sandbox Code Playgroud)

阅读更多

解决方案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);
            });
Run Code Online (Sandbox Code Playgroud)

它从元素中删除"name"和"id"属性,并在1ms后将其分配回来.