我正在使用这些事件来尝试评估表单输入,但如果表单由浏览器自动填充,则不会触发这些事件。我怎样才能让事件在自动填充时触发?
问问题
2854 次
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 回答