Jquery .keyup .keydown .keypress 不检测浏览器自动填充



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

我知道

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

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

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

最终解决方案

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

使用 .on("输入"(就可以了!

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

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

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

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

这不能保证,但如果他们决定通过从框中选择自动完成来"批准"自动完成,您可能会获得额外的鼠标点击。

最新更新