【问题标题】:Jquery .keyup .keydown .keypress don't detect browser autofillJquery .keyup .keydown .keypress 不检测浏览器自动填充
【发布时间】:2012-05-23 13:35:00
【问题描述】:

我正在使用这些事件来尝试评估表单输入,但如果表单由浏览器自动填充,则不会触发这些事件。如何让事件在自动填充时也触发?

【问题讨论】:

  • 我不久前研究过这个,我不相信你可以,浏览器自动填充没有事件。不过会对任何答案感兴趣:)
  • 在不知道自己在做什么的情况下,能否也添加一个.change() 事件处理程序?老实说,我什至不确定该事件是否会随着浏览器自动填充而触发。
  • 我会按照 Jared 的建议尝试 .change(),但如果这不起作用,您可能必须使用 .blur()

标签: jquery autofill


【解决方案1】:

我知道这是一个很老的问题,但我在 keyup 函数之后使用 e.preventDefault() 解决了同样的问题。

$("#email").keyup(function (e)  {
        e.preventDefault();

这样,如果您选择输入浏览器自动填充的建议,它会注意到。当您在建议上单击鼠标时,问题仍然存在,但如果您在选择它后按任意键,它就可以正常工作。

最终解决方案

我在 stackoverflow 上找到了这篇文章:https://stackoverflow.com/a/24746108/3481005

使用 .on("input") 就可以了!

$("#email").on("input",function (e)  {

【讨论】:

    【解决方案2】:

    很遗憾,无法检测浏览器自动填充。相反,请使用setInterval,例如,以相当高的频率运行一个函数,检查原始值(或空值)是否与输入值匹配并以这种方式触发响应。如果您不想这样做,您可能是 SOL,因为浏览器甚至不会触发 .change,并且任何事件很可能不符合跨浏览器。

    您也可以在表单提交时运行验证事件,这应该同样有效。

    【讨论】:

    • 是的,提交技术的问题是我正在根据内容验证更改输入边框的颜色,因此我需要在每次更改时触发事件
    【解决方案3】:

    您可以通过绑定到.click() 和/或.dblclick() 事件来稍微伪造所需的行为。

    不能保证,但如果他们决定通过从框中选择自动完成来“批准”自动完成,您可能会再次单击鼠标。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-19
      • 2012-07-27
      • 2018-01-08
      • 1970-01-01
      相关资源
      最近更新 更多