Como fazer isso?
Eu tentei:
var key = event.which || event.keyCode || event.charCode;
if(key == 8) alert('backspace');
mas não funciona ...
Se eu fizer o mesmo no evento de pressionamento de tecla, ele funcionará, mas não quero usar o pressionamento de tecla porque ele produz o caractere digitado no meu campo de entrada. Eu preciso ser capaz de controlar isso
meu código:
$('#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);
});
nenhum caractere deve ser anexado à minha entrada, além do que estou adicionando com val (), na verdade, a entrada do usuário deve ser completamente ignorada, apenas a ação de pressionar a tecla é importante para mim
javascript
jquery
Alex
fonte
fonte
.bind
, não um seletor. Deve ser$('content').bind('keypress', ...
Respostas:
Use
.onkeydown
e cancele a remoção comreturn false;
. Como isso:Ou com jQuery, porque você adicionou uma tag jQuery à sua pergunta:
fonte
keydown
não funciona no Chrome Android, ele retorna o vazio ao clicar em backspace ou delenter
ebackspace
digitainput
eventos, e esses pressionamentos de tecla não chegam a eleCom jQuery
A propriedade event.which normaliza event.keyCode e event.charCode. Recomenda-se assistir event.which para entrada de tecla do teclado.
http://api.jquery.com/event.which/
fonte
event.key === "Backspace"
Mais recente e muito mais limpo: use
event.key
. Não há mais códigos numéricos arbitrários!Mozilla Docs
Navegadores Suportados
fonte
Você já tentou usar 'onkeydown'? Este é o evento que você procura.
Ele opera antes que a entrada seja inserida e permite cancelar a entrada de char.
fonte
event.preventDefault()
?return false;
cancelar qualquer evento ao usar jQuery.É uma pergunta antiga, mas se você quiser capturar um evento de retrocesso na entrada, e não keydown, keypress ou keyup - como eu percebi que qualquer um desses quebra certas funções que escrevi e causa atrasos estranhos com formatação de texto automatizada - você pode pegar um backspace usando inputType:
fonte
keydown
comevent.key === "Backspace" or "Delete"
Mais recente e muito mais limpo: use
event.key
. Não há mais códigos numéricos arbitrários!Estilo moderno:
Mozilla Docs
Navegadores Suportados
fonte
fonte
fonte
em dispositivos Android que usam o Chrome, não podemos detectar um backspace. Você pode usar uma solução alternativa para isso:
fonte
which
ekeyCode
para 229. Deve haver uma maneira melhor, ou uma maneira melhor em breve, mas estarei usando basicamente isso por enquanto. ..