如何在所有主流浏览器中禁用自动完成功能

5

如何在主要浏览器中禁用特定输入和/或完整表单的自动完成。

我找到了以下解决方案:

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

然而,这似乎并不适用于所有浏览器。例如,在Firefox中我遇到了问题。

编辑:

我的Firefox问题已解决。接下来的问题是:我可以禁用表单自动填充吗?还是必须为每个输入项设置autocomplete =“off”?


你在哪些版本的Firefox中遇到了什么问题? - Jukka K. Korpela
@JukkaK.Korpela 很简单 :) 当使用 autocomplete="off" 时,它仍然显示了以前输入的建议下拉列表。 - Peter
1
你需要更加具体。当我在Firefox中使用autocomplete="off"时,它不会显示建议。你确定你没有安装自动填充插件吗?问题中的代码是否能够重现这个问题? - Jukka K. Korpela
@JukkaK.Korpela 感谢您的提示!当我关闭我的插件时,它确实可以工作。这留下了表单问题。 - Peter
4个回答

8
自动完成应该与以下类型一起使用:文本,搜索,URL,电话,电子邮件,密码,日期选择器,范围和颜色。
但是,如果无法实现上述目标,您可以尝试在标签中添加autocomplete ='off'而不是标签。除非有什么阻止您这样做的原因。
如果这种方法也不行,您还可以使用JavaScript:
if (document.getElementsByTagName) {
    var inputElements = document.getElementsByTagName(“input”);
    for (i=0; inputElements[i]; i++) {
        if (inputElements[i].className && (inputElements[i].className.indexOf(“disableAutoComplete”) != -1)) {
            inputElements[i].setAttribute(“autocomplete”,”off”);
        }
    }
}

或者使用jQuery:

$(document).ready(function(){
    $(':input').live('focus',function(){
        $(this).attr('autocomplete', 'off');
    });
});

但问题中说autocomplete="off"无效。 - Heemanshu Bhalla

3
您可以尝试使用JavaScript手动清除页面加载时的文本字段,例如:
window.onload = function() {
    elements = document.getElementsByTagName("input");
    for (var i=0; i<elements.length; ++i) {
        elements[i].value = "";
    }
};

如果在自动填充之前执行,这可能无法正常工作。另一个选项是每次呈现页面时随机生成您的输入的一部分name属性(并在服务器处理提交时删除它们),然后浏览器将不会尝试自动完成。
另请参见是否autocomplete =“off”与所有现代浏览器兼容?

0

我找到了这个。它在Chrome、Edge和Opera上隐藏。

<form autocomplete="off">
<input role="presentation" />
</form>

-2

IE:自动完成

Firefox,Chrome,Opera:禁用自动完成

<input type="text" autocomplete="off" disableautocomplete id="number"/>

请尽量提供更多信息,使用适当的句子,以便您的解决方案更易于阅读。 - Fabien
我找不到任何关于HTML属性“disableautocomplete”的参考。 - Mike Scotty

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接