Как обнаружить клавишу 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 } }); 

Кажется, keydown и keyup работают, хотя keypress не может


 $(document).keyup(function(e) { if (e.keyCode == 27) { // escape key maps to keycode `27` //  } }); 

Какой код ключа для ключа escape с jQuery

Событие keyCode для Escape и имеет преимущество, позволяющее вам использовать keyCode во всех браузерах. Кроме того, вам необходимо прикрепить слушателя к document а не к телу.

ОБНОВЛЕНИЕ май 2016 г.

keyCode теперь находится в процессе устаревания, и теперь большинство современных браузеров предлагают key свойство, хотя вам все равно потребуется резервное копирование для достойной поддержки браузера (на момент написания текущих выпусков Chrome и Safari его не поддерживали ).

 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.'); } }); 

проверьте для 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') 

Вы можете удалить эту часть условия if, если хотите применить ее ко всем. Или вы можете нацелить 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); 

Я думаю, что самый простой способ – ванильный javascript:

 document.onkeyup = function(event) { if (event.key === 27){ //do something here } } 
Давайте будем гением компьютера.