[javascript] 순수 JS 또는 jQuery로 이스케이프 키 누르기를 감지하는 방법은 무엇입니까?
가능한 중복 :
jQuery를 사용하여 이스케이프 키의 키 코드
IE, Firefox 및 Chrome에서 이스케이프 키 누르기를 감지하는 방법은 무엇입니까? 아래 코드는 IE 및 알림에서 작동 27
하지만 Firefox에서는 알림0
$('body').keypress(function(e){
alert(e.which);
if(e.which == 27){
// Close my modal window
}
});
답변
참고 : keyCode
되어 사용되지 않는 점점 사용을 key
대신.
function keyPress (e) {
if(e.key === "Escape") {
// write your logic here.
}
}
keyCode
더 이상 사용되지 않습니다
보인다
keydown
및keyup
작업, 비록keypress
하지 않을 수 있습니다
$(document).keyup(function(e) {
if (e.key === "Escape") { // escape key maps to keycode `27`
// <DO YOUR WORK HERE>
}
});
답변
이 keydown
이벤트는 Escape에서 잘 작동 keyCode
하며 모든 브라우저에서 사용할 수 있다는 이점이 있습니다 . 또한 document
본체 가 아닌 리스너를 연결해야합니다 .
2016 년 5 월 업데이트
keyCode
은 더 이상 사용되지 않으며 현재 대부분의 최신 브라우저는 현재 key
속성을 제공 하지만 현재로서는 Chrome 지원을 위해 대체품이 필요합니다 (현재 Chrome 릴리스를 작성할 때 Safari는 지원하지 않습니다).
evt.key
모든 최신 브라우저에서 2018 년 9 월 업데이트 가 지원됩니다.
document.onkeydown = function(evt) {
evt = evt || window.event;
var isEscape = false;
if ("key" in evt) {
isEscape = (evt.key === "Escape" || evt.key === "Esc");
} else {
isEscape = (evt.keyCode === 27);
}
if (isEscape) {
alert("Escape");
}
};
Click me then press the Escape key
답변
JavaScript 를 사용하면 작동하는 jsfiddle을 확인할 수 있습니다
document.onkeydown = function(evt) {
evt = evt || window.event;
if (evt.keyCode == 27) {
alert('Esc key pressed.');
}
};
jQuery 를 사용하면 작동하는 jsfiddle을 확인할 수 있습니다
jQuery(document).on('keyup',function(evt) {
if (evt.keyCode == 27) {
alert('Esc key pressed.');
}
});
답변
keyCode
&& which
& keyup
|| 확인keydown
$(document).keydown(function(e){
var code = e.keyCode || e.which;
alert(code);
});
답변
가장 좋은 방법은 이것에 대한 기능을 만드는 것입니다
함수:
$.fn.escape = function (callback) {
return this.each(function () {
$(document).on("keydown", this, function (e) {
var keycode = ((typeof e.keyCode !='undefined' && e.keyCode) ? e.keyCode : e.which);
if (keycode === 27) {
callback.call(this, e);
};
});
});
};
예:
$("#my-div").escape(function () {
alert('Escape!');
})
답변
아래는 ESC 키를 비활성화 할뿐만 아니라 누르는 조건을 확인하는 코드이며 상황에 따라 동작을 수행할지 여부를 결정합니다.
이 예에서는
e.preventDefault();
ESC 키 누르기 동작을 비활성화합니다.
다음과 같이 div를 숨기는 것과 같은 작업을 수행 할 수 있습니다.
document.getElementById('myDivId').style.display = 'none';
누른 ESC 키도 고려됩니다.
(e.target.nodeName=='BODY')
이 부분을 모두에게 적용하려면 조건 부분 인 경우이를 제거 할 수 있습니다. 또는 커서가 입력 상자에있을 때에 만이 조치를 적용하기 위해 INPUT을 입력 할 수 있습니다.
window.addEventListener('keydown', function(e){
if((e.key=='Escape'||e.key=='Esc'||e.keyCode==27) && (e.target.nodeName=='BODY')){
e.preventDefault();
return false;
}
}, true);
답변
가장 간단한 방법은 바닐라 자바 스크립트라고 생각합니다.
document.onkeyup = function(event) {
if (event.key === 27){
//do something here
}
}