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

A_f*_*uns 8 jquery autofill

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

myh*_*34d 5

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

$("#email").keyup(function (e)  {
        e.preventDefault();
Run Code Online (Sandbox Code Playgroud)

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

最终解决方案

我在 stackoverflow 上找到了这篇文章:/sf/answers/1732227591/

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

$("#email").on("input",function (e)  {
Run Code Online (Sandbox Code Playgroud)


Exp*_*lls 2

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

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