案例:验证码的input框绑定了一个keyup事件,但是偶尔有客户投诉说登录的时候老是提示验证码无法通过验证。
原因:一开始以为是客户的浏览器没有启用cookie。后来了解到客户使用各种浏览器都有同样的问题,才发现是客户使用了五笔输入法输入验证码,导致keyup事件无法被触发。本地测试可以重现:用搜狗输入法输入英文字母然后回车确定输入。
解决:弃用监听keyup事件,改为监听另外两个事件:input(非IE)和propertychange(IE)
代码如下:
//$("#captcha").on("keyup", checkCaptchaInput); //"keyup"如果使用输入法会失效,改用input(非IE)和propertychange(IE) var bind_name = 'input'; if (navigator.userAgent.indexOf("MSIE") != -1) { bind_name = 'propertychange'; } $('#captcha').bind(bind_name, checkCaptchaInput);