[javascript] jQuery Event Keypress : 어떤 키를 눌렀습니까?

jQuery를 사용하여 keypress 이벤트에 바인딩 할 때 어떤 키를 눌렀는지 어떻게 알 수 있습니까?

$('#searchbox input').bind('keypress', function(e) {});

을 (를 ENTER) 누르면 제출을 트리거하고 싶습니다 .

[최신 정보]

내가 (또는 더 나은 : 하나의) 대답을 찾았지만 변화의 여지가있는 것처럼 보입니다.)

keyCode그리고 which특히 내가 찾고 ENTER있는 경우 유니 코드 키 가 아닌 차이점이 있습니까?

일부 브라우저는 하나의 속성을 제공하고 다른 브라우저는 다른 속성을 제공합니까?



답변

실제로 이것은 더 낫습니다 :

 var code = e.keyCode || e.which;
 if(code == 13) { //Enter keycode
   //Do something
 }


답변

이 시도

$('#searchbox input').bind('keypress', function(e) {
    if(e.keyCode==13){
        // Enter pressed... do anything here...
    }
});


답변

jQuery UI를 사용하는 경우 공통 키 코드에 대한 번역이 있습니다. 에서 UI / UI / ui.core.js :

$.ui.keyCode = {
    ...
    ENTER: 13,
    ...
};

tests / simulate / jquery.simulate.js에도 일부 번역이 있지만 핵심 JS 라이브러리에서는 찾을 수 없습니다. 당신이 마음에, 나는 단지 소스를 grep’d. 이 매직 넘버를 제거하는 다른 방법이있을 수 있습니다.

String.charCodeAt 및 .fromCharCode를 사용할 수도 있습니다.

>>> String.charCodeAt('\r') == 13
true
>>> String.fromCharCode(13) == '\r'
true


답변

jQuery를 사용한다고 가정하면 절대적으로 .which를 사용해야합니다. 예, 브라우저마다 다른 속성을 설정하지만 jQuery는 속성을 정규화하고 각 경우에 .which 값을 설정합니다. http://api.jquery.com/keydown/의 설명서를 참조 하십시오.

어떤 키를 눌렀는지 확인하기 위해 핸들러 함수에 전달 된 이벤트 객체를 검사 할 수 있습니다. 브라우저는 서로 다른 속성을 사용하여이 정보를 저장하지만 jQuery는 .which 속성을 정규화하여 키 코드를 검색하는 데 안정적으로 사용할 수 있습니다.


답변

…이 예제는 양식 제출을 방지합니다 (일반적으로 키 스트로크 # 13을 캡처 할 때 기본 의도).

$('input#search').keypress(function(e) {
  if (e.which == '13') {
     e.preventDefault();
     doSomethingWith(this.value);
   }
});


답변

편집 : 이것은 IE에서만 작동합니다 …

나는 이것이 오래된 게시물이라는 것을 알고 있지만 누군가가 이것을 유용하게 사용할 수 있습니다.

키 이벤트가 맵핑되므로 키 코드 값을 사용하는 대신 키 값을 사용하여 좀 더 읽기 쉽게 만들 수 있습니다.

$(document).ready( function() {
    $('#searchbox input').keydown(function(e)
    {
     setTimeout(function ()
     {
       //rather than using keyup, you can use keydown to capture 
       //the input as it's being typed.
       //You may need to use a timeout in order to allow the input to be updated
     }, 5);
    });
    if(e.key == "Enter")
    {
       //Enter key was pressed, do stuff
    }else if(e.key == "Spacebar")
    {
       //Spacebar was pressed, do stuff
    }
});

블로그 에서 얻은 매핑 된 키가있는 치트 시트가 있습니다.
여기에 이미지 설명을 입력하십시오


답변

 // in jquery source code...
 if (!event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode)) {
     event.which = event.charCode || event.keyCode;
 }

 // So you have just to use
 $('#searchbox input').bind('keypress', function(e) {
     if (e.which === 13) {
         alert('ENTER WAS PRESSED');
     }
 });