2010-12-04 55 views
2

我有一个网页,我需要拦截所有按键,然后才将它们分配给dom中的任何元素。当用户输入类似~goto:/index.html:(实际上来自条形码扫描仪)的东西时,我需要在~之后捕获按键,以在第二个:后解析它们。我已经设法获得与$(document).keypress()的东西如下:在处理之前用jQuery拦截所有按键

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

的问题是,我得到的按键它已经到聚焦元素之后。无论如何,以便我可以拒绝它吗?

回答

2

你可能有更好的运气与keydown应该事件

之前进行发射也做到这一点

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

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

3

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

这适用于Firefox的:

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

我不知道什么会为即工作,因为我链接到文件中,即事件从向内向上泡沫说。你可能需要尝试不同的方式。例如您可以将事件处理程序添加到您不希望它们处理事件的所有元素,然后阻止它们处理该事件处理程序中的事件。