Jquery .keyup .keydown .keypress没有检测到浏览器自动填充

时间:2012-05-16 01:35:17

标签: jquery autofill

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

3 个答案:

答案 0 :(得分:3)

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

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

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

最终解决方案

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

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

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

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

不能保证,但如果他们决定批准"那么你可能会额外点击鼠标。通过从框中选择自动完成功能。