Как это сделать?
Я старался:
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 (), на самом деле ввод от пользователя следует полностью игнорировать, для меня важно только действие нажатия клавиши
javascript
jquery
Alex
источник
источник
.bind
, а не селектора. Должно быть$('content').bind('keypress', ...
Ответы:
Используйте
.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; }); });
Взаимодействие с другими людьми
источник
keydown
не работает в Chrome Android, возвращает пустоту при нажатии на backspace или delenter
иbackspace
ключи поinput
событиям, и эти нажатия клавиш не достигают егоС jQuery
Свойство event.which нормализует event.keyCode и event.charCode. Рекомендуется смотреть event.which для ввода с клавиатуры.
http://api.jquery.com/event.which/
jQuery('#input').on('keydown', function(e) { if( e.which == 8 || e.which == 46 ) return false; });
источник
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
Поддерживаемые браузеры
источник
Вы пробовали использовать onkeydown? Это то событие, которое вы ищете.
Он работает до того, как ввод будет вставлен, и позволяет отменить ввод символов.
источник
event.preventDefault()
?return false;
отменить любое событие при использовании jQuery.Это старый вопрос, но если вы хотите поймать событие backspace при вводе, а не keydown, keypress или keyup - поскольку я заметил, что любая из этих функций нарушает определенные функции, которые я написал, и вызывает неудобные задержки с автоматическим форматированием текста —Вы можете поймать пробел с помощью inputType:
document.getElementsByTagName('input')[0].addEventListener('input', function(e) { if (e.inputType == "deleteContentBackward") { // your code here } });
источник
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; } });
Современный стиль:
input.addEventListener('keydown', ({key}) => { if (["Backspace", "Delete"].includes(key)) { return false } })
Документы Mozilla
Поддерживаемые браузеры
источник
$('div[contenteditable]').keydown(function(e) { // trap the return key being pressed if (e.keyCode === 13 || e.keyCode === 8) { 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, мы не можем обнаружить обратное пространство. Вы можете использовать обходной путь:
var oldInput = '', newInput = ''; $("#ID").keyup(function () { newInput = $('#ID').val(); if(newInput.length < oldInput.length){ //backspace pressed } oldInput = newInput; })
источник
which
и есть, поскольку они устанавливают иkeyCode
равны 229. Должен быть лучший способ или лучший способ в ближайшее время, но я буду использовать в основном это сейчас. ..