Обнаружение backspace и del на событии" input"?



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



пробовал:



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

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


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



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

614   8  

8 ответов:

использовать .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;
  });
});

С помощью jQuery

на событие.который свойство нормализует событие.код ключа и событие.аргументом charcode. Рекомендуется следить за происходящим.что для ввода клавиш клавиатуры.

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

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

событие.ключ === "забой"

более свежие и гораздо чище: использовать event.key. Больше никаких произвольных цифровых кодов!

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

Mozilla Docs

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

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

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

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

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 Docs

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

//Here's one example, not sure what your application is but here is a relevant and likely application 
function addDashesOnKeyUp()
{
    var tb = document.getElementById("tb1"); 
    var key = event.which || event.keyCode || event.charCode;

    if((tb.value.length ==3 || tb.value.length ==7 )&& (key !=8) ) 
    {
        tb.value += "-"
    } 
}

на устройствах android с использованием chrome мы не можем обнаружить backspace. Вы можете использовать обходной путь для этого:

var oldInput = '',
    newInput = '';

 $("#ID").keyup(function () {
  newInput = $('#ID').val();
   if(newInput.length < oldInput.length){
      //backspace pressed
   }
   oldInput = newInput;
 })

Comments

    Ничего не найдено.