jquery - charcode - event delete key javascript
jQuery: keyPress Backspace no se disparará? (4)
De acuerdo con la documentación de jQuery para .keypress (), no captura los caracteres no imprimibles, por lo que el retroceso no funcionará con la pulsación de tecla, pero está atrapado en la tecla y la tecla:
El evento de pulsación de tecla se envía a un elemento cuando el navegador registra la entrada del teclado. Esto es similar al evento keydown, excepto que las teclas modificadoras y no imprimibles, como Mayús, Esc y Eliminar eventos de pulsación de disparo, pero no eventos de pulsación de tecla. Pueden surgir otras diferencias entre los dos eventos según la plataforma y el navegador. ( https://api.jquery.com/keypress/ )
En algunos casos, no es deseable la tecla o tiene otros efectos indeseables y la clave es suficiente, por lo que una forma de manejar esto es usar keydown
para capturar todas las teclas y establecer un tiempo de espera de un intervalo corto para que se ingrese la clave, luego procesamiento allí después
jQuery(el).keydown( function() {
var that = this; setTimeout( function(){
/** Code that processes backspace, etc. **/
}, 100 );
} );
Me pregunto qué estoy haciendo mal:
$(''.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();
}
});
Quiero que mi función doSearch()
también se doSearch()
la tecla Retroceso . Por el momento, no ocurre absolutamente nada cuando presiono Retroceso en Chrome y Safari.
¿algunas ideas?
Me encontré con esto yo mismo. .on
así que se ve un poco diferente, pero hice esto:
$(''#element'').on(''keypress'', function() {
//code to be executed
}).on(''keydown'', function(e) {
if (e.keyCode==8)
$(''element'').trigger(''keypress'');
});
Agregando mi trabajo por aquí. Necesitaba borrar ssn tipeado por usuario, así que hice esto en jQuery
$(this).bind("keydown", function (event) {
// Allow: backspace, delete
if (event.keyCode == 46 || event.keyCode == 8)
{
var tempField = $(this).attr(''name'');
var hiddenID = tempField.substr(tempField.indexOf(''_'') + 1);
$(''#'' + hiddenID).val('''');
$(this).val('''')
return;
} // Allow: tab, escape, and enter
else if (event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 13 ||
// Allow: Ctrl+A
(event.keyCode == 65 && event.ctrlKey === true) ||
// Allow: home, end, left, right
(event.keyCode >= 35 && event.keyCode <= 39)) {
// let it happen, don''t do anything
return;
}
else
{
// Ensure that it is a number and stop the keypress
if (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105))
{
event.preventDefault();
}
}
});
Si desea activar el evento solo en los cambios de su uso de entrada:
$(''.s'').bind(''input'', function(){
console.log("search!");
doSearch();
});
Use la keypress
de keyup
lugar de keyup
keypress
. Esto obtiene todos los códigos de tecla cuando el usuario presiona algo