35

由于我使用的是 jQuery,因此任何解决方案都可以。不过,理想情况下,我想知道两者。

我已经将箭头键绑定到我的页面上的另一个功能(使用 jQuery),但是除此之外让它们导致页面滚动,这给我带来了问题。

我可能曾经知道这一点,但我已经不记得了。

4

3 回答 3

82

添加文档级按键处理程序可以解决问题!

var ar=new Array(33,34,35,36,37,38,39,40);

$(document).keydown(function(e) {
     var key = e.which;
      //console.log(key);
      //if(key==35 || key == 36 || key == 37 || key == 39)
      if($.inArray(key,ar) > -1) {
          e.preventDefault();
          return false;
      }
      return true;
});
于 2009-06-29T05:00:25.650 回答
2

在某些情况下,例如。当你实际上没有你关注的元素时,只是你必须点击的某个区域,你可能对处理程序没有太多控制权,并且在全局级别阻止事件充其量可能有点不稳定(正如我发现的那样走出困境)。

在这些情况下,最简单的解决方案是在控制按钮的单击时绑定,并将焦点放在您将 -9000px 放置在左侧的空输入元素上。

然后,您可以通过 keydown 可靠地阻止事件,并且不必担心阻止默认行为或其他全局侦听器,因为输入元素上的默认行为只会将光标左右移动。

于 2014-09-11T11:15:18.750 回答
1

如果您添加文档级按键处理程序,它将随时阻止页面上的正常滚动,不仅当您的元素具有焦点时,这可能是不希望的效果。

于 2014-08-01T08:54:54.500 回答