我正在使用这些事件来尝试评估表单输入,但如果表单由浏览器自动填充,则这些事件不会触发。如何让事件在自动填充时也触发?
这是一个很老的问题,但我在 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()
事件来伪造所需的行为。
这不能保证,但如果他们决定通过从框中选择自动完成来"批准"自动完成,您可能会获得额外的鼠标点击。