event delete charcode jquery keypress backspace

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