Обнаружить возврат и отключить входное событие?

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

Я пытался:

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

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

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

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

мой код:

  $('#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 (), фактически ввод от пользователя должен быть полностью проигнорирован, для меня важно только действие нажатия клавиши

 Niko28 мар. 2012 г., 14:07
На самом деле вам не нужно делать or'ing - event. Что хорошо, jQuery нормализует объект события для вас. Видетьapi.jquery.com/category/events/event-object
 pmrotule30 сент. 2016 г., 20:35
Вы должны поставить название события в качестве первого аргумента.bind, а не селектор. Должно быть$('content').bind('keypress', ...

Ответы на вопрос(4)

Он работает до того, как ввод будет вставлен, и позволяет отменить ввод символа.

 Niko28 мар. 2012 г., 14:06
Как насчетevent.preventDefault()?
 Alex28 мар. 2012 г., 13:54
но как мне отменить это? потому что я использую val () на входе, и он все еще добавляет напечатанный символ
 iMoses28 мар. 2012 г., 15:02
Вы можете простоreturn false; отменить любое событие при использовании jQuery.
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 Docs

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

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;
});
 Sablefoste04 окт. 2016 г., 19:49
Я давно использую jQuery, но не видел этого. Всегда хорошо узнать что-то новое. +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;
  });
});

 Anurag_BEHS15 июн. 2016 г., 19:41
В функции мы должны сохранить событие как параметр, тогда только оно будет работать как функция (событие) -------------------------- var input = document. getElementById ( 'myInput'); input.onkeydown = function (event) {var key = event.keyCode || event.charCode; if (key == 8 || key == 46) вернуть false; };
 Kosmetika14 июл. 2014 г., 16:08
keydown не работает в Chrome Android, он возвращает пустоту при нажатии на клавишу Backspace или Del
 ctb03 сент. 2013 г., 20:01
Что если вы хотите перехватить ввод с помощью правой кнопки мыши> вставить?
 Silver Ringvee27 июл. 2016 г., 12:31
Это тоже работает на мобильном?
 vsync15 окт. 2016 г., 00:51
с JQuery это внутренне фильтрыenter а такжеbackspace ключи наinput события, и эти ключевые нажатия не доходят до него

Ваш ответ на вопрос