jq的 .focus() 在IE8下面会有一些意想不到的BUG,下面是解决办法;
一、我做的项目中有些场景需要用到键盘的回车作为触发事件,然后把focus移到其他功能或者按钮上面,刚刚好这个按钮或者功能也有绑定回车事件,那么结果就是从上一个地方按下回车键,焦点马上移动到下一个按钮或功能上,直接就触发了这个按钮的回车事件;可以理解为无缝切换,没有间隔,一下回车变焦点并触发了下一个焦点按钮上的回车事件,但是这并不是我想要的结果,所以我们可以在上一个回车事件做一个延时,让他们不能无缝连接起来触发;下面是代码:
setTimeout(function () { $('.my-thing').focus(); }, 100);
二、有些场景直接用$(elm).focus() ,其他浏览器正常,偏偏IE8无效;可以这样解决:
$(elm).focus().focus();
或者
$(elm).focus().select();