较新版本的Firefox有一个新的“功能”,可以记住表单中填写的内容,并在刷新时重新填充表单(也许在其他情况下也是如此?)。
问题是我们有一个非常复杂的Web应用程序,它使用了一些ajax和隐藏的表单字段,这些字段永远不会被用户填写,而是通过javascript填充。 由于这个新的“功能”,我们在刷新表单时会遇到很多错误,因为这些字段会突然填充无效值。
所以我正在寻找一种方法来关闭此'功能'而不禁用自动完成功能。 (因为这对我们的客户填写的字段很有用)
如果我把
autocomplete='off'
在我的html中,效果被禁用,但这会失去自动完成功能(显然)。 问题是在刷新后填写的字段没有任何用户操作。
答案 0 :(得分:1)
如果只有一个匹配项,密码管理器将填充用户名和密码,而自动填充本身不会自动填充字段。但是我猜你正在考虑如果你重新加载页面就会得到那种刷新。在这种情况下,字段值将按会话历史记录进行恢复,但您可以通过将页面标记为不可缓存来将其关闭。
答案 1 :(得分:1)
你应该在开始其他javascript / ajax任务之前将这些字段的值设置为空或者使用javascript设置的默认值。
答案 2 :(得分:0)
这是一个浏览器功能 - 无需进入每个客户端浏览器的设置,您无法禁用此功能。
我建议更强大的验证 - 客户端和服务器端。
答案 3 :(得分:0)
加载页面后,在执行任何其他逻辑之前,应强制该值为空:
inputElem.value = '';
答案 4 :(得分: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
答案 5 :(得分:0)
Javascript解决方案(在页面加载或通过Ajax更新时将字段值设置为空)已经被提及。
另一种选择可能是生成字段的ID,并附加随机数字,以便浏览器无法将它们与缓存值匹配,但这可能会搞砸其他事情。
答案 6 :(得分:-1)
自动填充并不是一件新鲜事。每个浏览器都有它。见http://www.w3.org/Submission/web-forms2/#the-autocomplete
自动填充?你确定吗?使用Firebug(Firefox插件)检查输入的值属性。检查你的ajax发布和回复。也许你的ajax正在幕后填充它。
BTW:请求禁用任何外部工具栏。 Firefox / IE / Chrome /等有一些工具栏可以为用户自动填充数据。警告这个。