防止点击上的焦点事件

时间:2013-04-16 18:57:16

标签: javascript jquery html

我有一个网页,里面有一堆div元素。此页面在连接到非常慢的机顶盒的电视上运行。该框运行嵌入式Opera浏览器版本9.50。我唯一的输入设备是STB的遥控器,没有鼠标!在这个网页(在电视上),用户使用遥控器上的向上/向下/向左/向右键进行导航,从一个div到另一个div,因为没有鼠标。现在,当有人按下它们时,我正试图“去抖”这些按键!我可以控制按键事件,但是我没有任何运气来防止焦点事件,无论如何,无论我在按键处理程序中做什么,它们似乎都被解雇了。

问题是:如何防止焦点转到当前元素的keypress处理程序中的另一个元素?调用keypress event.preventDefault()并返回false(来自keypress处理程序)并不会阻止焦点转移到下一个元素。换句话说,事件“泡沫化”无论如何。我怎么能防止这种情况? 我也玩过改变tabIndex属性,但是没用。

任何想法。感谢。

1 个答案:

答案 0 :(得分:1)

如果您想阻止点击事件的焦点,则必须e.preventDefault()处理程序中的mousedown。无法从click处理程序执行此操作,因为它不是物理事件,它只是mousedownmouseup的抽象

如果要阻止标签更改焦点,则必须从keydown处理程序中e.preventDefault()。无法从keypress执行,因为keypress不是物理事件,它是keydownkeyup事件的抽象(请注意,当您按住时,按键会多次触发关键)。

http://jsfiddle.net/gtwhF/

$('#a').on('mousedown', function(e) {
    e.preventDefault();
})

$('#a').on('keydown', function(e) {
  if (e.keyCode == 9) { 
      e.preventDefault(); 
  } 
})