mpe*_*pen 14 javascript jquery events javascript-events
我需要确定导致焦点事件的原因.
理想情况下,我想区分点击,标签/键盘输入和手动(通过代码)触发器.
我怎样才能做到这一点?
我正在看事件对象,但我没有看到任何有用的东西.
mu *_*ort 10
如果焦点来自一个$x.focus()调用,那么该事件将没有originalEvent属性,因为浏览器没有事件,所以:
if(ev.hasOwnProperty('originalEvent')) {
// Focus event was manually triggered.
}
Run Code Online (Sandbox Code Playgroud)
要区分基于键盘和鼠标的焦点事件,您可以尝试将keydown处理程序绑定到其他所有内容以检测Tab或Shift-Tab,但这将是一个严重的黑客攻击,可能不可靠; 例如,在iPad上,你没有点击Tab移动到下一个字段,你在弹出键盘中点击Next或Previous来移动,那些可能根本没有注册为按键.
关于click可能感兴趣的事件也有类似的问题:
正如您在注释中所述,您可以捕获click事件以检测基于鼠标的焦点更改,并在某处设置标记以记住它.然后你会有这个:
originalEventjQuery事件中没有,则手动触发焦点更改(即$x.focus()或类似).您必须小心,您的点击和焦点事件的顺序是正确的,并且您需要确保在完成后清除该标记.这可能不是防弹,但可能不是必须的.
| 归档时间: |
|
| 查看次数: |
4765 次 |
| 最近记录: |