8

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

4

3 回答 3

4

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

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

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

最终解决方案

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

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

$("#email").on("input",function (e)  {
于 2015-10-21T15:05:00.253 回答
2

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

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

于 2012-05-16T01:46:00.190 回答
0

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

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

于 2014-04-22T17:07:49.547 回答