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