5

Какой код клавиши для клавиши "Esc" в jQuery

26

Описание проблемы:

У меня есть две функции, которые должны срабатывать при нажатии клавиш Enter и Escape. Когда я нажимаю Enter, все работает правильно, но при нажатии Escape функция не срабатывает. Я не уверен, правильно ли я указал код клавиши для Escape. Какой корректный код для клавиши Escape?

Вот код, который я использую:

$(document).keypress(function(e) { 
    if (e.which == 13) $('.save').click();   // Enter (работает как ожидается)
    if (e.which == 27) $('.cancel').click(); // Escape (не работает)
});

Помогите, пожалуйста, разобраться в чем дело!

5 ответ(ов)

0

Чтобы найти код клавиши для любой клавиши, вы можете использовать следующую простую функцию:

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

При нажатии на любую клавишу в вашем документе, функция выведет код соответствующей клавиши в консоль. Просто откройте инструменты разработчика в браузере и следите за выводом в консоли, когда вы нажимаете на клавиши.

0

Код 27 соответствует клавише Escape. 😃

0

Ваш код работает вполне корректно. Скорее всего, проблема в том, что окно не имеет фокуса. Я использую аналогичную функцию для закрытия iframe и других элементов.

$(document).ready(function(){

    // Устанавливаем фокус
    setTimeout('window.focus()', 1000);

});

$(document).keypress(function(e) {

    // Обработка нажатия клавиши Esc
    if (e.keyCode == 27) {
        parent.document.getElementById('iframediv').style.display = 'none';
        parent.document.getElementById('iframe').src = '/views/view.empty.black.html';
    }

});

В этом коде мы устанавливаем фокус на окно через секунду после загрузки документа. Убедитесь, что фокус действительно находится на окне, в противном случае обработчик нажатия клавиши может не сработать. Если проблема все еще сохраняется, проверьте настройки вашего браузера или любые другие скрипты на странице, которые могут мешать работе.

0

Я тоже пытался сделать то же самое, и это меня сильно раздражало. В Firefox, похоже, если вы пытаетесь выполнить некоторые действия при нажатой клавише Esc, обработка нажатия клавиши продолжается, что затем отменяет то, что вы собирались сделать. Alert работает нормально. Но в моем случае я хотел вернуться в историю, и это не сработало. Наконец, я выяснил, что нужно принудительно остановить распространение события, как показано ниже...

if (keyCode == 27)
{
    history.back();

    if (window.event)
    {
        // В IE это работает нормально, так что это не обязательно
        e.cancelBubble = true;
        e.returnValue = false;
    }
    else if (e.stopPropagation)
    {
        // В Firefox это предотвращает отмену history.back() при нажатии Esc
        e.stopPropagation();
        e.preventDefault();
    }

    return (false);
}

Не забудьте убедиться, что у вас правильно обработаны события, чтобы избежать нежелательного поведения.

0

Чтобы получить шестнадцатеричный код для всех символов, вы можете посетить сайт http://asciitable.com/. На нём представлена таблица ASCII, где указаны символы вместе с их десятичными и шестнадцатеричными значениями. Это очень удобный ресурс для поиска кодов символов.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь