禁用Firefox自动填充html表单,但保持自动完成

禁用Firefox自动填充html表单,但保持自动完成,firefox,Firefox,较新版本的Firefox有一个新的“功能”,可以记住表单中填写的内容,并在刷新时用这些值重新填充表单(可能在其他情况下也是如此?) 问题是我们有一个相当复杂的web应用程序,它使用了相当多的ajax和隐藏的表单字段,这些字段不是由用户填写的,而是由javascript填写的。 由于这个新的“特性”,我们在刷新表单时会遇到很多错误,因为这些字段突然被无效值填充 因此,我正在寻找一种方法,在不禁用自动完成功能的情况下关闭此“功能”。(因为这对客户填写的字段很有用) 如果我把 autocomplete

较新版本的Firefox有一个新的“功能”,可以记住表单中填写的内容,并在刷新时用这些值重新填充表单(可能在其他情况下也是如此?)

问题是我们有一个相当复杂的web应用程序,它使用了相当多的ajax和隐藏的表单字段,这些字段不是由用户填写的,而是由javascript填写的。 由于这个新的“特性”,我们在刷新表单时会遇到很多错误,因为这些字段突然被无效值填充

因此,我正在寻找一种方法,在不禁用自动完成功能的情况下关闭此“功能”。(因为这对客户填写的字段很有用)

如果我把

autocomplete='off'

在我的html中,效果被禁用,但这会丢失自动完成功能(显然)。
问题在于在刷新后填写字段时没有任何用户操作。

这是一项浏览器功能-如果不进入每个客户端浏览器的设置,则无法禁用此功能


我建议更强大的验证——客户端和服务器端。

自动完成并不是什么新鲜事。每个浏览器都有它。看到这个了吗

自动填充?你确定吗?使用Firebug(Firefox插件)检查输入的值属性。检查ajax中的帖子和回复。也许你的ajax正在幕后填充它


顺便说一句:记住禁用任何外部工具栏。Firefox/IE/Chrome/etc的一些工具栏可以为用户自动填充数据。警告。

如果只有一个匹配项,密码管理器将填充用户名和密码,但自动完成本身不会自动填充字段。但是我猜你在考虑,如果你重新加载页面,你会得到什么样的刷新。在这种情况下,字段值由会话历史记录还原,但您可以通过将页面标记为不可缓存来关闭该功能。

在启动其他javascript/ajax任务之前,您应该使用javascript将这些字段的值设置为nothing或任何默认值。

加载页面后,但在执行任何其他逻辑之前,应强制该值为空:

inputElem.value = '';

下面是我编写的jQuery解决方案

它并没有禁用自动填充,而是在浏览器完成后覆盖字段

当我做这个的时候,我正试图和Chromes autofill做斗争。单独使用.val(“”)不起作用,因为它是在chromes自动填充功能启动之前触发的

var noFiller = $('input[type="text"]');

noFiller.val(' ');
var t=setTimeout(function(){
    noFiller.val('');
},60);//keep increasing this number until it works
已经提到了Javascript解决方案(当页面通过Ajax加载或更新时,将字段值设置为空)


另一种选择可能是生成字段的ID并附加随机数,这样浏览器就无法将其与缓存的值匹配,但这可能会导致其他问题。

问题不是自动完成的。但是表单记忆值(除其他选择框外)与刷新页面之前一样已被选中,即使另一个选项标记为“已选中”