如何通过代码有选择地禁用浏览器文本输入中的自动填充?
是否可以使用代码有选择地禁用文本字段中的自动填充功能?
我正在 ASP.Net AJAX 中开发自定义代码以在数据库中搜索建议,并且我想防止当用户开始在文本框中键入内容时出现浏览器建议。
我正在寻找一种适用于最现代的浏览器(IE 7 和 8、Firefox、Safari 和 Chrome)的解决方案。如果解决方法是在 Javascript 中就可以了。
Is it possible to selectively disable the autofill feature in text fields using code?
I'm developing my custom code in ASP.Net AJAX to search for the suggestion in the database and I would like to prevent the browser suggestions from appearing when the user starts typing in the textbox.
I'm looking for a solution that works in the most modern browsers (IE 7 & 8, Firefox, Safari and Chrome). It's is ok if the workaround is in Javascript.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
查看自动完成 HTML 属性(在表单或输入标记上)。
W3C >自动完成属性
编辑:
如今 - 从评论来看 - 网络浏览器并不总是尊重自动完成标记定义的行为。这种不尊重可能会被一些 JavaScript 代码包围,但在使用它之前你应该考虑一下你想要做什么。
首先,字段将在页面加载期间填充,并且仅在页面加载后才会被清空。用户会质疑为什么该字段被清空了。
其次,这将重置其他网络浏览器机制,例如当您返回上一页时自动填充字段。
Look at the autocomplete HTML attribute (on form or input tags).
W3C > Autocomplete attribute
Edit:
Nowadays - from the comments - web browsers do not always respect the autocomplete tag defined behavior. This non-respect could be surrounded with a little of JavaScript code but you should think about you want to do before use this.
First, fields will be filled during the page loading and will only be emptied once the page load. Users will question why the field has been emptied.
Second, this will reset other web browser mechanisms, like the autofill of a field when you go back to the previous page.
你可以将它放入你的输入
中:或jquery
you can put it into your inputs:
or in jquery
这个问题有两种解决方案。我在 Google Chrome v36 上测试了以下代码。
无论
Autocomplete=off
如何,最新版本的 Google Chrome 都会强制自动填充。以前的一些技巧不再起作用(34+ 版本)解决方案 1:
将以下代码放在下面在
了解更多
解决方案 2:
它删除了“name”和“id”属性从元素中获取并在 1 毫秒后将它们分配回来。
There are 2 solutions for this problem. I have tested following code on Google Chrome v36.
Recent Version of Google Chrome forces Autofill irrespective of the
Autocomplete=off
.Some of the previous hacks don't work anymore (34+ versions)Solution 1:
Put following code under under
<form ..>
tag.Read more
Solution 2:
It removes "name" and "id" attributes from elements and assigns them back after 1ms.
向 html
input
元素添加autocomplete=off
属性应该可以做到这一点。Adding an
autocomplete=off
attribute to the htmlinput
element should do that.将
AutoCompleteType="Disabled"
添加到文本框Add the
AutoCompleteType="Disabled"
to your textbox这应该适用于每个浏览器
This should work in every browser
我已经在 Edge 和 Firefox 中成功测试了这一点。
适用于常规文本输入。
对于密码,您需要使用 autocomplete="new-password"
per Mozilla 开发网络
I have successfully tested this in Edge and Firefox.
works for regular text input.
For passwords, you need to use autocomplete="new-password"
per Mozilla Development Network
我的解决方法是使密码字段成为普通文本框,然后使用 jquery 将其转换为焦点密码字段:
My workaround is to make the password field a normal textbox, then using jquery to turn it into password field on focus: