如何在没有更改事件的情况下禁用firefox表单自动完成?

时间:2010-05-29 03:44:42

标签: javascript firefox dom

因此,firefox有一个漂亮的机制,当重新加载页面或使用后退按钮时,它会尝试在字段中自动完成值。哪个很棒,除非你有类似下拉菜单的东西,当设置为一个值时,使用ajax修改页面。

最后发生的事情是浏览器重新加载页面,下拉列表预先填充了记住的值,然后在dom准备就绪时不会触发任何更改事件。因此附加的更改处理程序不会触发,因此页面不会更新。

是否有一种“修复”此行为的好方法,以便按预期方式为用户工作:

a)我们确实希望浏览器自动完成,因为这是一种很好的用户体验。

b)仍然希望onchange事件解雇。

我现在唯一想到的就是在文档中添加一个准备好的事件,其中javascript预先填充了表单中的初始值,当文档加载javascript时将检查预先填充的内容值和如果不匹配输入中的内容将触发更改处理程序。

任何人都有更好的解决方案吗?是否有一个lib已经这样做了?

(使用Rails 2.3.5 + jQuery)

2 个答案:

答案 0 :(得分:1)

不幸的是,在重新加载页面或使用后退按钮时,似乎无法从自动填充字段中实际禁用firefox。幸运的是,在$(document).ready()事件期间,值已经存在,因此只要这些输入中的所有内容都可以使.change甚至最初触发它们,那么值来自何处并且它只是起作用并不重要。

答案 1 :(得分:0)

我认为您可以添加autocomplete="off"以阻止浏览器预填充这些字段。

您还可以拥有一个运行onload的函数,并且基本上会检查该字段的值是否与value=""参数中指定的值匹配。