[javascript] jQuery를 사용하여 이스케이프 키의 키 코드

두 가지 기능이 있습니다. enter를 누르면 기능이 올바르게 실행되지만 escape를 누르면 작동하지 않습니다. 이스케이프 키의 올바른 숫자는 무엇입니까?

$(document).keypress(function(e) {
    if (e.which == 13) $('.save').click();   // enter (works as expected)
    if (e.which == 27) $('.cancel').click(); // esc   (does not work)
});



답변

키업 이벤트를 사용해보십시오 .

$(document).keyup(function(e) {
  if (e.keyCode === 13) $('.save').click();     // enter
  if (e.keyCode === 27) $('.cancel').click();   // esc
});


답변

함수에서 키 코드 값을 하드 코딩하는 대신 명명 된 상수를 사용하여 의미를보다 잘 전달하는 것이 좋습니다.

var KEYCODE_ENTER = 13;
var KEYCODE_ESC = 27;

$(document).keyup(function(e) {
  if (e.keyCode == KEYCODE_ENTER) $('.save').click();
  if (e.keyCode == KEYCODE_ESC) $('.cancel').click();
});

FireFox와 같은 일부 브라우저는 다른 브라우저를 모르 KeyEvent더라도 이러한 유형의 상수를 노출 하는 전역 객체를 정의 합니다. 이 SO 질문 은 다른 브라우저에서도 해당 객체를 정의하는 좋은 방법을 보여줍니다.


답변

( 이전 의견 에서 추출 된 답변 )

keyup대신 사용해야 keypress합니다. 예 :

$(document).keyup(function(e) {
  if (e.which == 13) $('.save').click();     // enter
  if (e.which == 27) $('.cancel').click();   // esc
});

keypress브라우저간에 일관되게 처리되지 않는 것 같습니다 ( IE 대 Chrome 대 Firefox의 http://api.jquery.com/keypress 데모를 사용해보십시오 . 때로는 keypress등록되지 않음 및 ‘which’및 ‘ keyCode ‘는 다름) keyup일관성이 있습니다.

e.whichvs에 대한 논의가 있기 때문에 e.keyCode: e.whichjquery-normalized 값이며 사용을 권장합니다.

event.which 속성은 event.keyCode 및 event.charCode를 정규화합니다. 키보드 키 입력을위한 이벤트를 시청하는 것이 좋습니다.

( http://api.jquery.com/event.which/에서 )


답변

키의 키 코드를 찾으려면 다음과 같은 간단한 기능을 사용하십시오.

document.onkeydown = function(evt) {
    console.log(evt.keyCode);
}


답변

27이스케이프 키의 코드입니다. 🙂


답변

최선의 방법은

$(document).keyup(function(e) {
    if (e.which === 13) $('.save').click();   // enter 
    if (e.which === 27) $('.cancel').click(); // esc   

    /* OPTIONAL: Only if you want other elements to ignore event */
    e.preventDefault();
    e.stopPropagation();
});

요약

  • whichkeyCode정규화 된 것보다 더 바람직합니다
  • keyup 보다 바람직하다 keydown사용자가 계속 누르고 있으면 키 다운이 여러 번 발생할 수 있기 때문에 합니다.
  • keypress실제 문자를 캡처 하지 않는 한 사용 하지 마십시오 .

흥미롭게도 부트 스트랩은 드롭 다운 구성 요소에서 키 다운과 키 코드를 사용합니다 (3.0.2 현재)! 나는 그것이 아마도 좋지 않은 선택이라고 생각합니다.

JQuery 문서의 관련 스 니펫

브라우저는 서로 다른 속성을 사용하여이 정보를 저장하지만 jQuery는 .which 속성을 정규화하여 키 코드를 검색하는 데 안정적으로 사용할 수 있습니다. 이 코드는 화살표와 같은 특수 키 코드를 포함하여 키보드의 키에 해당합니다. 실제 텍스트 입력을 잡으려면 .keypress ()가 더 나은 선택 일 수 있습니다.

관심있는 다른 항목 : JavaScript Keypress Library


답변

jEscape 플러그인을 사용해보십시오 ( Google 드라이브에서 다운로드 )

$(document).escape(function() {
   alert('ESC button pressed');
});

크로스 브라우저를위한 키 코드를 얻거나

var code = (e.keyCode ? e.keyCode : e.which);
if (code === 27) alert('ESC');
if (code === 13) alert('ENTER');

아마도 당신은 스위치를 사용할 수 있습니다

var code = (e.keyCode ? e.keyCode : e.which);
switch (code) {
    case 27:
       alert('ESC');
       break;
     case 13:
       alert('ENTER');
       break;
}