2012-06-23 7 views
6

페이지의 일부 (div)를 클릭 한 후 사용자로부터 입력을 캡처해야하는 페이지가 있습니다.event.charCode는 항상 0을 반환합니다.

<html> 
<body> 
<div style="background-color: lightpink" onkeydown="onkeydown1(event)" tabindex="-1"> 
click me, then press a key 
</div> 

<script type="text/javascript"> 
function onkeydown1(event) 
{ 
    alert(event.charCode); 
} 
</script> 
</body> 
</html> 

가 직접보기 : 여기에 내 코드입니다. "초점을"http://jsfiddle.net/WRwBF/

그것은 지금까지 파이어 폭스는 기본적으로 사업부를 허용하지 않기 때문에이를 얻기 위해 나에게 긴 시간이 걸렸습니다 결국 나는 div에 대한 tabindex를 설정하면 포커스를 맞출 수 있고 onkeydown 이벤트가 작동한다는 것을 알게되었습니다.

이제는 div를 클릭하고 키를 누르면 어떤 키를 눌러도 값 "0"이 반환됩니다. 왜 이런 일이 벌어지며 어떻게 해결할 수 있습니까?

나는 당신이 줄 수있는지도를 매우 감사드립니다!

+0

짧은 버전은 [브라우저가 벙어리]입니다 (http://www.quirksmode.org/js/keys.html). 그 QuirksMode 기사는 모든 것을 설명해야합니다. 기본적으로'charCode'를 이식 할 수있게하려면'keyPress' 이벤트를 감지하고'evt.charCode || evt.keyCode' – millimoose

답변

4

(브라우저에 따라).

요약 : keypress 이벤트를 사용하면 입력 한 문자에 대한 신뢰할 수있는 정보를 얻을 수있는 유일한 방법입니다. 다음은 당신에게 대부분의 상황에서 입력 한 문자 얻을 정도로 좋은 것 :

var charCode = (typeof event.which == "undefined") ? event.keyCode : event.which; 
alert("Character typed: " + String.fromCharCode(charCode)); 
0

사용 event.keyCode 또는 event.which 읽기 http://unixpapa.com/js/key.html 대신

+1

'event.keyCode'는 작은 글자와 대문자를 구분할 수 있기를 원한다면 원하는 것을 할 수 없습니다. (또는 수정 자 키를 무시하고 싶습니다.) – millimoose

0

당신은 tabIndex 속성에 초점을 얻었다을, 당신은 여기에 탭을 수 있지만 사업부가 키를받을 수에 대한 인터페이스가 없습니다 행사.

텍스트 입력 및 창 자체에서 가져옵니다.

+0

아니요. 요소가 포커스를 받으면 키 이벤트를 실행할 수 있습니다. http://jsfiddle.net/timdown/rLfF5/ –

관련 문제