如何使用jQuery将键盘事件处理程序挂钩到INPUT元素上?

时间:2010-12-01 16:34:47

标签: jquery html javascript-events input onkeydown

我想将自己的键事件处理程序附加到已经附加到onkeydown的另一个事件处理程序的INPUT。基本上,我希望在所有其他处理程序之前收到一个关键事件,并检查用户是否按下某个键 - 如果是,我想执行某些功能并丢弃该事件,如果不是,我想将其传递给其他处理程序。

如何使用jQuery执行此操作?

2 个答案:

答案 0 :(得分:3)

如果您要加载第三方脚本或jQuery插件,则可以先加载脚本或函数。如果你这样做,那么你就可以使用这样的东西而不需要解密和重新绑定事件处理程序。

// your possible interceptor code
$("#awesome").keydown(function(e) {
  if (e.keyCode < 70) {
    e.stopImmediatePropagation();
    console.log("BLOCKED!!!");
  };
});

// possible 3rd party event code loaded after your code
$("#awesome").keydown(function(e) {
  console.log("3rd party:"+e.keyCode);
});

示例网页=&gt; http://mikegrace.s3.amazonaws.com/forums/stack-overflow/example-key-event-interception.html

Firebug控制台的示例输出 alt text

jQuery stopImmediatePropagation() documentation

答案 1 :(得分:2)

根据jQuery bind()文档:

“当一个事件到达一个元素时,所有绑定到该元素的事件类型的处理程序都被触发。如果有多个处理程序被注册,它们将始终按照它们被绑定的顺序执行。”

所以看起来你必须解除其他处理程序的绑定,绑定你的,然后再添加其他处理程序,如果你想让你的第一个运行。

在这个帖子中有一些关于这方面的好信息: jQuery: Unbind event handlers to bind them again later