Eu me pergunto o que estou fazendo de errado:
$(".s").keypress(function(e) {
switch (e.keyCode) {
case 8: // Backspace
//console.log('backspace');
case 9: // Tab
case 13: // Enter
case 37: // Left
case 38: // Up
case 39: // Right
case 40: // Down
break;
default:
doSearch();
}
});
Quero que minha doSearch()
função também seja acionada ao pressionar a Backspacetecla. No momento, nada acontece quando pressiono o BackspaceChrome e o Safari.
alguma ideia?
Respostas:
Use em
keyup
vez dekeypress
. Isso obtém todos os códigos de tecla quando o usuário pressiona algofonte
keyup
dispararia para o Backspace quandokeypress
não?keypress
aEnter
chave,keydown
paraBackspace
assim por diante; caso contrário, você verá que seus eventos em alguns navegadores realmente não funcionam como o esperado, especialmente quando você deseja impedir o comportamento padrão da chave. Quando você usa o errado, o que acontecerá é que seu evento não é capturado (como é o caso do Backspace) ou você não pode evitá-lo; já que isso acontece antes que seu código de manipulação de eventos chegue a ele.keyup
vai quebrar o teclado numérico . Você conhece uma resposta que permita detectar corretamente qualquer tecla em um teclado completo?keydown
é a melhor opção para todas as chavesEu me deparei com isso eu mesmo. Eu usei
.on
para parecer um pouco diferente, mas fiz o seguinte:Adicionando meu trabalho por aqui. Eu precisava excluir o ssn digitado pelo usuário, então fiz isso no jQuery
fonte
Se você deseja acionar o evento apenas nas alterações de sua entrada, use:
fonte
input
também não observa keyCodes. Isso também não funcionaria.De acordo com a documentação do jQuery para .keypress (), ele não captura caracteres não imprimíveis; portanto, o backspace não funcionará no pressionamento de tecla, mas é capturado no keydown e keyup:
Em alguns casos, o keyup não é desejado ou tem outros efeitos indesejáveis e o
keydown
pressionamento de tecla é suficiente; portanto, uma maneira de lidar com isso é usar para capturar todos os pressionamentos de tecla e definir um tempo limite de um intervalo curto para que a chave seja inserida e, em seguida, processar em Depois disso.fonte