2010-12-04 56 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) 

我不知道什麼會爲即工作,因爲我鏈接到文件中,即事件從向內向上泡沫說。你可能需要嘗試不同的方式。例如您可以將事件處理程序添加到您不希望它們處理事件的所有元素,然後阻止它們處理該事件處理程序中的事件。