2010-12-04 2 views
2

웹 페이지가 있으며 DOM에있는 모든 요소에 포커스를 받기 전에 모든 키 누르기를 가로 챌 필요가 있습니다. 사용자가 ~goto:/index.html: (실제로 바코드 스캐너에서 올 것임)과 같은 것을 입력 할 때 ~ 이후에 키 프레스를 캡처하여 두 번째로 :이되면 구문 분석해야합니다.jQuery를 처리하기 전에 모든 키 누르기를 가로 채기

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

문제는 그것이 초점을 맞춘 요소에 간 후 나는 키 누름을 얻을 수 있습니다 : 다음과 같이 나는 $(document).keypress() 뭔가를 얻기 위해 관리했습니다. 어쨌든 전에 그것을 얻을 수 있도록 내가 사실 그것을 거부 할 수 있습니까?

답변

2

당신은 아마 이벤트

전에 해고해야 keydown와 더 나은 운이 것 또한 키 누름의 정상적인 과정을 중지로 preventDefault를 호출이

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

않습니다. 사실, 당신은 keypress에 머무를 수 있고 단지 차단 요구를 마무리하기 위해 preventDefault를 사용할 수 있습니다.

3

이벤트 버블 링에 대해 읽어보십시오. http://www.quirksmode.org/js/events_order.html

이 파이어 폭스에 대한 작동합니다

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

나는에 링크 된 문서로 즉 작동 될지 확실하지 않다 즉 이벤트가 안쪽 위쪽에서 거품 말한다. 당신은 이것을 다른 방법으로 시도해야 할 수도 있습니다. 예 : 이벤트 처리기가 이벤트 처리를 원하지 않는 모든 요소에 이벤트 처리기를 추가 한 다음 해당 이벤트 처리기에서 이벤트를 처리하지 못하게 할 수 있습니다.