Подтвердить что ты не робот

Как заблокировать ключ backspace с помощью jQuery?

Не отображается, что при нажатии клавиши backspace запускаются функции jQuery keyup, keydown или keypress. Как мне уловить нажатие клавиши backspace?

4b9b3361

Ответ 1

попробуйте следующее:

 $('html').keyup(function(e){if(e.keyCode == 8)alert('backspace trapped')})  

Ответ 2

Регулярный javascript может использоваться для захвата ключа backspace. Вы можете использовать метод event.keyCode. Код ключа равен 8, поэтому код будет выглядеть примерно так:

if (event.keyCode == 8) {
    // Do stuff...
}

Если вы хотите проверить как клавиши [delete] (46), так и клавиши [backspace] (8), используйте следующее:

if (event.keyCode == 8 || event.keyCode == 46) {
    // Do stuff...
}

Ответ 3

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

$('html').on('keydown' , function(event) {

        if(! $(event.target).is('input')) {
            console.log(event.which);
           //event.preventDefault();
           if(event.which == 8) {
            //  alert('backspace pressed');
            return false;
         }
        }
});

return false = > действуют как event.preventDefault, так и event.stopPropagation.

Ответ 4

Поведение по умолчанию для backspace в большинстве браузеров - это возврат к предыдущей странице. Если вы выполняете не, вам нужно выполнить вызов preventDefault(). Однако, поскольку OP ссылается на, если вы всегда называете это preventDefault(), вы также не сможете удалить вещи в текстовых полях. В приведенном ниже коде есть решение, адаптированное из этого ответа.

Кроме того, вместо использования жестко закодированных значений KeyCode (некоторые значения изменяются в зависимости от вашего браузера, хотя я не нашел, что это верно для Backspace или Delete), jQuery имеет уже определенные константы KeyCode. Это делает ваш код более читабельным и заботится о любых несогласованностях keyCode для вас.

// Bind keydown event to this function.  Replace document with jQuery selector
// to only bind to that element.
$(document).keydown(function(e){

    // Use jquery constants rather than an unintuitive magic number.
    // $.ui.keyCode.DELETE is also available. <- See how constants are better than '46'?
    if (e.keyCode == $.ui.keyCode.BACKSPACE) {

        // Filters out events coming from any of the following tags so Backspace
        // will work when typing text, but not take the page back otherwise.
        var rx = /INPUT|SELECT|TEXTAREA/i;
        if(!rx.test(e.target.tagName) || e.target.disabled || e.target.readOnly ){
            e.preventDefault();
        }

       // Add your code here.
     }
});