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 active cuando presiono la tecla Retroceso . Por el momento no pasa absolutamente nada cuando presiono Retroceso en Chrome y Safari.
¿algunas ideas?
Use keyup en lugar de keypress . Esto obtiene todos los códigos clave cuando el usuario presiona algo
Me encontré con esto yo mismo. .on para que se vea 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'); });Añadiendo mi trabajo por aquí. Necesitaba eliminar el ssn escrito por el usuario, así que lo hice 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(); });