두 가지 기능이 있습니다. 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.which
vs에 대한 논의가 있기 때문에 e.keyCode
: e.which
jquery-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();
});
요약
which
keyCode
정규화 된 것보다 더 바람직합니다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;
}