如何在主要浏览器中禁用特定输入(或表单字段)的自动完成?
当前回答
用只读存储器贴出的答案很聪明,很管用。
但当我使用Bootstrap时,只读输入字段被标记为灰色背景,直到被聚焦。当文档加载时,您可以通过简单地锁定和解锁输入来欺骗浏览器。
因此,我有一个想法将其实现到jQuery解决方案中:
jQuery(document).ready(function () {
$("input").attr('readonly', true);
$("input").removeAttr('readonly');
});
其他回答
截至2019年12月:
在回答这个问题之前,让我说,我在SO和不同论坛上尝试了几乎所有的答案,但没有找到适用于所有现代浏览器和IE11的解决方案。
这是我找到的解决方案,我相信这篇文章中还没有讨论或提及。
根据Mozilla开发网络(MDN)关于如何关闭表单自动完成的帖子
默认情况下,浏览器会记住用户通过网站上的字段提交的信息。这使浏览器能够提供自动补全(即,为用户已开始键入的字段建议可能的补全)或自动填充(即,在加载时预先填充某些字段)
在同一篇文章中,他们讨论了自动完成属性的用法及其限制。正如我们所知,并不是所有的浏览器都按照我们的意愿来尊重这个属性。
解决方案
所以在文章的最后,他们分享了一个适用于所有浏览器的解决方案,包括IE11+Edge。它基本上是一个jQuery插件。这里是jQuery插件的链接及其工作原理。
代码段:
$(document).ready(function () {
$('#frmLogin').disableAutoFill({
passwordField: '.password'
});
});
在HTML中需要注意的是,密码字段的类型为文本,并应用密码类来标识该字段:
<input id="Password" name="Password" type="text" class="form-control password">
希望这能对某人有所帮助。
Firefox 30忽略密码的autocomplete=“off”,而是选择提示用户密码是否应存储在客户端上。请注意2014年5月5日的以下评论:
密码管理器始终提示是否要保存密码。未经用户许可,密码不会保存。我们是继IE和Chrome之后第三个实现这一改变的浏览器。
根据Mozilla开发者网络文档,布尔表单元素属性autocomplete防止表单数据在旧浏览器中缓存。
<input type="text" name="foo" autocomplete="off" />
解决方法是在用户想要更改密码之前,不要将密码字段插入到DOM中。这可能适用于某些情况:
在我们的系统中,管理员页面中有一个密码字段,因此我们必须避免无意中设置其他用户的密码。由于这个原因,表单有一个额外的复选框,用于切换密码字段的可见性。
因此,在这种情况下,来自密码管理器的自动填充成为双重问题,因为用户甚至看不到输入。
解决方案是让复选框触发是否在DOM中插入密码字段,而不仅仅是其可见性。
AngularJS的伪实现:
<input type="checkbox" ng-model="createPassword">
<input ng-if="changePassword" type="password">
Chrome计划支持这一点。
目前,最好的建议是使用很少自动完成的输入类型。
Chrome讨论
<input type='search' name="whatever" />
要与Firefox兼容,请使用normalautocomplete='off'
<input type='search' name="whatever" autocomplete='off' />
只需设置autocomplete=“off”。这样做有一个很好的理由:您希望提供自己的自动完成功能!
推荐文章
- 使伸缩项目正确浮动
- 形式内联内的形式水平在twitter bootstrap?
- 自定义元素在HTML5中有效吗?
- 如何触发自动填充在谷歌Chrome?
- 创建圈div比使用图像更容易的方法?
- 为什么Chrome浏览器不正确地确定页面是在不同的语言,并提供翻译?
- 在网页上用鼠标模拟震颤(例如帕金森病)?
- Bootstrap抛出Uncaught错误:Bootstrap的JavaScript需要jQuery
- 如何改变文本区域的边框颜色:焦点
- 我如何设置背景颜色为文本的宽度,而不是整个元素的宽度,使用CSS?
- 如何删除和清除所有的本地存储数据
- 强制打开“另存为…”弹出打开文本链接点击PDF在HTML
- 如何修改标签文本?
- 在HTML中还有其他有用的空格码吗,比如半空格的 , em-spaces, en-spaces等等?
- 输入触发器按钮单击