Как обнаружить нажатие клавиши escape с помощью чистого JS или jQuery?
Возможный дубликат:
Какой код клавиши для escape-ключа с помощью jQuery
Как обнаружить нажатие клавиши Escape в IE, Firefox и Chrome? Ниже код работает в IE и оповещения 27
, но в Firefox это предупреждает 0
$('body').keypress(function(e){
alert(e.which);
if(e.which == 27){
// Close my modal window
}
});
11 ответов
Замечания: keyCode
становится устаревшим использованием key
вместо.
function keyPress (e) {
if(e.key === "Escape") {
// write your logic here.
}
}
Вот jsfiddle
keyCode
становится устаревшим
Похоже на то
keydown
а такжеkeyup
работать, хотяkeypress
может нет
$(document).keyup(function(e) {
if (e.key === "Escape") { // escape key maps to keycode `27`
// <DO YOUR WORK HERE>
}
});
keydown
событие будет хорошо работать для побега и имеет преимущество, позволяющее вам использовать keyCode
во всех браузерах. Также вам нужно прикрепить слушателя к document
а не тело.
Обновление май 2016
keyCode
в настоящее время находится в процессе устаревания, и большинство современных браузеров предлагают key
свойство сейчас, хотя вам все еще нужен запасной вариант для приличной поддержки браузера на данный момент (на момент написания текущих выпусков Chrome и Safari его не поддерживали).
Обновление сентябрь 2018 evt.key
теперь поддерживается всеми современными браузерами.
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
Используя 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.');
}
});
Чистый JS
вы можете прикрепить слушателя к
keyUp
событие для документа.
Кроме того, если вы хотите убедиться, что никакая другая клавиша не нажимается вместе с
Esc
ключ, вы можете использовать значения
ctrlKey
,
altKey
, и
shifkey
.
document.addEventListener('keydown', (event) => {
if (event.key === 'Escape') {
//if esc key was not pressed in combination with ctrl or alt or shift
const isNotCombinedKey = !(event.ctrlKey || event.altKey || event.shiftKey);
if (isNotCombinedKey) {
console.log('Escape key was pressed with out any group keys')
}
}
});
Проверить keyCode
&& which
& keyup
|| keydown
$(document).keydown(function(e){
var code = e.keyCode || e.which;
alert(code);
});
чистый JS (без JQuery)
document.addEventListener('keydown', function(e) {
if(e.keyCode == 27){
//add your code here
}
});
Ниже приведен код, который не только отключает клавишу 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);
Лучший способ состоит в том, чтобы сделать функцию для этого
НАЗНАЧЕНИЕ:
$.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!');
})
В Firefox 78 используйте это ("нажатие клавиши" не работает для клавиши Escape):
function keyPress (e)(){
if (e.key == "Escape"){
//do something here
}
document.addEventListener("keyup", keyPress);
Я думаю, что самый простой способ - это ванильный javascript:
document.onkeyup = function(event) {
if (event.key === 27){
//do something here
}
}
Простой код JavaScript для обнаружения нажатия клавиши Escape
document.addEventListener("keydown",function(e){
if(e.key === "Escape") {
console.log("Escape key pressed")
}
});