2011-06-10 3 views
14

이것이 일어날 수있는 이유는 무엇입니까? 나는 보통 크롬이 코드에 더 관대하다고 생각할 것입니까?keypress 이벤트가 IE 및 Chrome에서 작동하지 않지만 FF로 작업 중

$(document).keypress(function(e) { 
    if(e.keyCode == 39) rightImage(); 
    if(e.keyCode == 37) leftImage(); 
}); 

그게 내 키 누르기 키가 어떻게 생겼는지. 내가 놓친 게 있니? rightImage(); 및 leftImage(); 내가 어딘가에서 그 기능을 사용하고 있기 때문에 작동해야하는 기능들입니다

도와 줘서 고마워요!

+0

나를 위해, 당신의 키 코드 39는 -> '(따옴표) –

+0

입니다. 이것을 확인하십시오 : http://jsfiddle.net/LmXaW/10/ –

+0

@RicardoArruda 키 누르기가 아닌 keydown 이벤트를 사용 중입니다. – Foreever

답변

30

변경 keypresskeydown로는 :

$(document).keydown(function(e) { 
    if(e.keyCode == 39) rightImage(); 
    if(e.keyCode == 37) leftImage(); 
}); 

키를 누를 때 발생하는 이벤트를 keyDown는 키 누름 이벤트가 즉시 하였다. 그런 다음 키를 놓으면 keyup 이벤트가 생성됩니다. 를 keyDown 키 누르기의 차이를 이해하기 위해

, 는 "문자"와 "키"의 차이를 이해하는 데 유용합니다. "키"는 컴퓨터의 키보드에있는 물리적 단추이며 "문자"는 단추를 눌러 입력 한 기호입니다. 이론적으로, keydown 및 keyup 이벤트는 키 누르기 또는 해제 중임을 나타냅니다. keypress 이벤트는 입력되는 문자를 나타냅니다. 이론의 구현은 모든 브라우저에서 동일하지 않습니다. http://api.jquery.com/keypress/

"당신이 화살표를 사용하여 삭제하려면, 크롬에서 백 스페이스 키를 사용하여를 keyDown 사용해야 이러한 키에의 키는 파이어 폭스와 오페라에서 작동합니다.."

+0

감사합니다! 네 keydown 작품! 또한 설명 주셔서 감사합니다! – hellomello

+0

감사합니다 ...... :) –

+0

링크가 어느 시점에서 광고로 리디렉션되었습니다. – Ariane

2

여기에 대한 답을 찾을

코드가 iE8 (FF로 작동)에서 작동하지 않아 keypress를 keydown으로 전환했습니다. 지금 IE에서 작동합니다. 테스트 할 Chrome을 준비하지 않았습니다.

관련 문제