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

Обнаружить backspace и del на "входном" событии?

Как это сделать?

Я пробовал:

var key = event.which || event.keyCode || event.charCode;

if(key == 8) alert('backspace');

но он не работает...

Если я делаю то же самое в событии keypress, он работает, но я не хочу использовать keypress, потому что он выводит напечатанный символ в моем поле ввода. Мне нужно иметь возможность контролировать, что


мой код:

  $('#content').bind('input', function(event){

    var text = $(this).val(),
        key = event.which || event.keyCode || event.charCode;

    if(key == 8){
      // here I want to ignore backspace and del
    }

    // here I'm doing my stuff
    var new_text = 'bla bla'+text;
    $(this).val(new_text);
  });

Никакой символ не должен быть добавлен в мой ввод, кроме того, что я добавляю с val() на самом деле вход от пользователя должен быть полностью проигнорирован, мне важно только нажатие клавиши

4b9b3361

Ответ 1

Используйте .onkeydown и отмените удаление с помощью return false;. Вот так:

var input = document.getElementById('myInput');

input.onkeydown = function() {
    var key = event.keyCode || event.charCode;

    if( key == 8 || key == 46 )
        return false;
};

Или с jQuery, потому что вы добавили к вашему вопросу тег jQuery:

jQuery(function($) {
  var input = $('#myInput');
  input.on('keydown', function() {
    var key = event.keyCode || event.charCode;

    if( key == 8 || key == 46 )
        return false;
  });
});

Ответ 2

С jQuery

Свойство event.which нормализует event.keyCode и event.charCode. Рекомендуется следить за событием. Для ввода клавиатуры.

http://api.jquery.com/event.which/

jQuery('#input').on('keydown', function(e) {
    if( e.which == 8 || e.which == 46 ) return false;
});

Ответ 3

Вы пытались использовать 'onkeydown'? Это событие, которое вы ищете.

Он работает до ввода ввода и позволяет отменить вход char.

Ответ 4

$('div[contenteditable]').keydown(function(e) {
// trap the return key being pressed
if (e.keyCode === 13 || e.keyCode === 8)
{
    return false;
}
});

Ответ 5

event.key === "Backspace"

Более свежий и намного более чистый: используйте event.key. Нет никаких произвольных номеров!

input.addEventListener('keydown', function(event) {
    const key = event.key; // const {key} = event; ES6+
    if (key === "Backspace" || key === "Delete") {
        return false;
    }
});

Документы Mozilla

Поддерживаемые браузеры

Ответ 6

keydown с event.key === "Backspace" or "Delete"

Более свежий и много более чистый: используйте event.key. Нет никаких произвольных номеров!

input.addEventListener('keydown', function(event) {
    const key = event.key; // const {key} = event; ES6+
    if (key === "Backspace" || key === "Delete") {
        return false;
    }
});

Документы Mozilla

Поддерживаемые браузеры