如何在主要浏览器中禁用特定输入(或表单字段)的自动完成?


当前回答

为了避免无效的XHTML,可以使用JavaScript设置此属性。使用jQuery的示例:

<input type="text" class="noAutoComplete" ... />

$(function() {
    $('.noAutoComplete').attr('autocomplete', 'off');
});

问题是没有JavaScript的用户将获得自动完成功能。

其他回答

我已经在这里发布了一个解决方案:禁用Chrome自动填充信用卡

解决方法是将自动完成属性设置为“cc csc”,该属性的值是信用卡的csc,并且不允许他们存储它!(目前…)

autocomplete="cc-csc"

了解Firefox(我认为只有Firefox)使用了一个名为ismxfilld的值,该值基本上强制自动完成,这一点很重要。

ismxfilld=“0”表示关闭

or

ismxfilld=“1”表示开启

我一直在尝试无尽的解决方案,然后我发现:

不用autocomplete=“off”,只需使用autocomplete==“false”

就这么简单,它在谷歌Chrome中也很有魅力!

大多数主要浏览器和密码管理器(正确地说,IMHO)现在都忽略了autocomplete=off。

为什么?许多银行和其他“高安全性”网站“出于安全目的”在其登录页面中添加了autocomplete=off,但这实际上降低了安全性,因为这会导致人们更改这些高安全性网站上的密码,以便于记忆(从而破解),因为自动完成功能已被破坏。

很久以前,大多数密码管理器开始忽略autocomplete=off,现在浏览器开始只对用户名/密码输入执行相同的操作。

不幸的是,自动完成实现中的错误会将用户名和/或密码信息插入到不适当的表单字段中,从而导致表单验证错误,或者更糟的是,意外地将用户名插入到用户故意留空的字段中。

web开发人员应该做什么?

如果您可以单独保存页面上的所有密码字段,这是一个很好的开始,因为密码字段的存在似乎是用户/密码自动完成的主要触发因素。否则,请阅读下面的提示。Safari注意到有两个密码字段,并在这种情况下禁用自动完成,假设它必须是一个更改密码表单,而不是登录表单。因此,请确保在允许的任何表单中使用两个密码域(新的和确认新的)不幸的是,Chrome34每当看到密码字段时,都会尝试使用user/pass自动填充字段。这是一个非常糟糕的bug,希望他们会改变Safari的行为。但是,将其添加到表单顶部似乎会禁用密码自动填充:<input-type=“text”style=“display:none”><input-type=“password”style=“display:none”>

我还没有彻底调查IE或Firefox,但如果其他人在评论中有信息,我很乐意更新答案。

正如其他人所说,答案是autocomplete=“off”。

然而,我认为有必要说明为什么在某些情况下使用此选项是一个好主意,因为对此问题和重复问题的一些答案表明,最好不要关闭此选项。

停止存储信用卡号的浏览器不应该留给用户。太多的用户甚至不会意识到这是一个问题。

在信用卡安全码字段上关闭它尤为重要。如本页所述:

“永远不要存储安全码……它的价值取决于这样一种假设,即提供安全码的唯一方法是从实体信用卡中读取安全码,以证明提供该安全码的人实际上持有该卡。”

问题是,如果是公共计算机(网吧、图书馆等),其他用户很容易窃取您的卡信息,甚至在您自己的计算机上,恶意网站也可能窃取自动完成的数据。