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