在处理之前用jQuery拦截所有按键

时间:2010-12-04 20:12:53

标签: javascript jquery

我有一个网页,我需要拦截所有按键,然后才能调度到dom中有焦点的任何元素。当用户输入类似~goto:/index.html:的东西(实际上它将来自条形码扫描仪)时,我需要在~之后捕获按键,一旦我到达第二个:就解析它们。我已设法使用$(document).keypress()获得如下内容:

$(document).ready(function() {
  $(document).keypress(function(e) {
    // do the processing here and 
    // return false when ignoring keystrokes
  });
});

问题是我在进入焦点元素后得到了按键。无论如何得到它以便我实际上可以拒绝它?

2 个答案:

答案 0 :(得分:4)

你可能会在事件发生之前触发keydown更好运

也这样做

$(document).keydown(function(e) {
    e.preventDefault();
});

调用preventDefault将停止按键的正常进程。实际上,您可以使用按键,只需使用preventDefault来完成拦截需求。

答案 1 :(得分:3)

阅读有关事件冒泡的内容。 http://www.quirksmode.org/js/events_order.html

这适用于firefox:

 document.addEventListener('keypress',function(e){alert('body1'); e.cancelBubble  = true;},true)

我不确定什么会起作用,即我所链接的文件说即事件气泡从向内向上。你可能不得不尝试不同的方式。例如您可以将事件处理程序添加到您不希望它们处理事件的所有元素,然后阻止它们处理该事件处理程序中的事件。