2011-02-01 107 views
4

Firefox的新版本有一个新的“功能”,可记住在表单中填写的内容并在刷新时使用这些值重新填充表单(也可能在其他情况下?)。禁用Firefox自动填充HTML表单,但保持自动填写

问题是我们有一个相当复杂的web应用程序,它使用公平的ajax位和隐藏的表单字段,这些字段永远不会被用户填写,而是通过javascript。 由于这个新的“功能”,刷新表单时会出现很多错误,因为这些字段会突然填充无效值。

所以我正在寻找一种方法来关闭此功能,而不禁用自动完成。 (因为这是在领域有用的客户填写)

如果我在HTML把

autocomplete='off'

,效果是禁用的,但是这种失去自动完成(显然)。 问题是在没有任何用户操作的情况下刷新后字段被填充。

回答

0

这是一个浏览器功能 - 无需进入每个客户端浏览器的设置,你不能禁用此功能。

我建议更健壮的验证 - 客户端和服务器端。

-1

自动完成不是一件新事物。每个浏览器都有它。看到这个http://www.w3.org/Submission/web-forms2/#the-autocomplete

自动填充?你确定?使用Firebug(Firefox插件)检查输入的值属性。检查你的帖子并在你的ajax响应。也许你的ajax将它填充到场景之后。

顺便说一句:remenber禁用任何外部工具栏。有一些Firefox/IE/Chrome /等工具栏可以为用户自动填充数据。警告这一点。

+0

问题不是自动完成的。但是记住值的形式(其他选择框在刷新页面之前就已经被选中了,即使另一个选项被标记为“SELECTED” – pvgoddijn 2011-02-04 08:51:01

1

虽然如果只有一个匹配,密码管理器将填充用户名和密码,但自动填充本身不会自动填充字段。但是我猜你正在考虑如果你重新加载页面,你会得到更新。在这种情况下,字段值会根据会话记录进行恢复,但您可以通过将页面标记为不可缓存来关闭该字段值。

1

那么你应该将这些字段的值设置为什么也没有,或者是在开始其他javascript/ajax任务之前使用javascript的默认值。

0

页面加载后,但你做任何逻辑之前,您应该强制值是空的:

inputElem.value = ''; 
0

这里是一个jQuery的解决方案,我放在一起。

它不禁用自动填充,而是在浏览器完成它之后重写字段。

我试图与Chromes自动填充时发生冲突。在它自己使用.val('')之后,它并没有工作,因为它在chromes自动填充功能启动之前触发。

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

noFiller.val(' '); 
var t=setTimeout(function(){ 
    noFiller.val(''); 
},60);//keep increasing this number until it works 
0

Javascript解决方案(在页面加载或通过Ajax更新时将字段值设置为空)已被提及。

另一个选择可能是生成带有随机数字的字段的ID,以便浏览器无法将它们与缓存值相匹配,但这可能会导致其他问题。