我正在使用这些事件来评估表单输入,但如果浏览器自动填充表单,这些事件就不会触发。如何使事件在自动填充时也触发?
我知道这是一个相当古老的问题,但是我解决了同样的问题,使用了keyup函数后的e.preventDefault()。
$("#email").keyup(function (e) {
e.preventDefault();
如果您使用浏览器自动填充功能并按Enter键选择建议选项,它会被识别。但是,如果您使用鼠标单击建议选项,则问题仍然存在,但是在选择后按任意键可以正常工作。
最终解决方案
我在stackoverflow上找到了这篇文章:https://dev59.com/JnA75IYBdhLWcg3wZ4Nr#24746108
并且使用 .on("input") 就可以解决问题!
$("#email").on("input",function (e) {
setInterval
来定时运行一个函数,检查原始值(或空值)是否与输入值匹配,并以此触发响应。如果不想这样做,你可能无法解决问题,因为浏览器甚至不会触发.change
,而任何事件都很可能不符合跨浏览器的标准。
.change()
事件处理程序呢?我甚至不确定该事件是否会在浏览器自动填充时触发。 - jaredhoyt.change()
,但如果这不起作用,你可能需要使用.blur()
。 - nnnnnn