代码之家  ›  专栏  ›  技术社区  ›  Dmitriy Likhten

如何禁用火狐的表单自动完成而不更改事件?

  •  5
  • Dmitriy Likhten  · 技术社区  · 15 年前

    因此,火狐有一个漂亮的机制,当重新加载页面或使用后退按钮时,它会尝试自动完成字段中的值。这很好,除了当你有一个下拉列表,当设置为一个值时,使用Ajax修改页面。

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

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

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

    b)仍然希望触发onchange事件。

    目前我能想到的唯一一件事就是在文档中添加一个on-ready事件,该事件已经用表单中的初始值预填充了javascript,当文档加载时,javascript将检查预填充的值,如果不匹配输入中的值,将触发更改处理程序。

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

    (使用Rails 2.3.5+jQuery)

    2 回复  |  直到 14 年前
        1
  •  1
  •   Dmitriy Likhten    14 年前

    不幸的是,在重新加载页面或使用后退前进按钮时,似乎没有办法真正禁用firefox自动填充字段。幸运的是,在 $(document).ready() 事件,只要这些输入中的所有内容都可以有.change,即使最初对它们进行了激发,这些值从何而来并不重要,它只是起作用。

        2
  •  0
  •   Mitch Dempsey    15 年前

    我想你可以补充一下 autocomplete="off" 以防止浏览器预先填充这些字段。

    您还可以有一个运行的函数 onload 基本上检查字段值是否与 value="" 参数。

    推荐文章