No parece que los métodos jQuery keyup, keydown o keypress se activen cuando se presiona la tecla de retroceso. ¿Cómo atraparía la presión de la tecla de retroceso?Cómo atrapar la tecla de retroceso con jQuery?
Respuesta
prueba este:
$('html').keyup(function(e){if(e.keyCode == 8)alert('backspace trapped')})
también verifica 46 (eliminar) – andufo
Funciona, pero no se puede mostrar de esta manera la ventana modal y dejar de volver a la página anterior. –
Pruebe e.preventDefault() y ENTONCES haga lo más dudoso :) –
Se puede usar javascript regular para atrapar la tecla de retroceso. Puede usar el método event.keyCode. El código clave es 8, por lo que el código sería algo como esto:
if (event.keyCode == 8) {
// Do stuff...
}
Si desea comprobar tanto para el [eliminar] (46), así como el [Retroceso] (8) teclas, utilice el siguiente :
if (event.keyCode == 8 || event.keyCode == 46) {
// Do stuff...
}
Trabajando en la misma idea que el anterior, pero generalizando un poco. Dado que el retroceso debería funcionar bien en los elementos de entrada, pero no debería funcionar si el foco es un párrafo o algo, ya que es allí donde la página tiende a volver a la página anterior en el historial.
$('html').on('keydown' , function(event) {
if(! $(event.target).is('input')) {
console.log(event.which);
//event.preventDefault();
if(event.which == 8) {
// alert('backspace pressed');
return false;
}
}
});
return false => both event.preventDefault y event.stopPropagation están en vigor.
upvote para Keydown en lugar de keyup. –
El comportamiento predeterminado para el retroceso en la mayoría de los navegadores es volver a la página anterior. Si lo hace no desea este comportamiento, necesita asegurarse de que la llamada preventDefault()
. Sin embargo, como se mencionó al OP, si siempre lo llama al preventDefault()
, también hará que sea imposible eliminar cosas en los campos de texto. El siguiente código tiene una solución adaptada de this answer.
Además, en lugar de usar valores de código clave codificados (algunos valores cambian según su navegador, aunque no he encontrado que esto sea cierto para Retroceso o Eliminar), jQuery has keyCode constants ya está definido. Esto hace que su código sea más legible y se ocupa de cualquier incoherencia de KeyCode por usted.
// Bind keydown event to this function. Replace document with jQuery selector
// to only bind to that element.
$(document).keydown(function(e){
// Use jquery's constants rather than an unintuitive magic number.
// $.ui.keyCode.DELETE is also available. <- See how constants are better than '46'?
if (e.keyCode == $.ui.keyCode.BACKSPACE) {
// Filters out events coming from any of the following tags so Backspace
// will work when typing text, but not take the page back otherwise.
var rx = /INPUT|SELECT|TEXTAREA/i;
if(!rx.test(e.target.tagName) || e.target.disabled || e.target.readOnly){
e.preventDefault();
}
// Add your code here.
}
});
Esto maneja la mayoría de los casos, pero quiero evitar que vuelva a seleccionar y en ciertos tipos de entrada, como la radio o la casilla de verificación, así que eliminé 'SELECT' y agregué una prueba en' e.target.type'. Hasta ahora tengo estos tipos de entrada 'var rxt =/radio | botón | casilla de verificación | imagen | restablecer | enviar/i;' El color también puede ser uno para excluir, pero puede ser específico del navegador. – peater
- 1. ¿Por qué no presionamos la tecla de borrar la tecla Eliminar y la tecla de retroceso?
- 2. Ignorar la tecla de retroceso desde stdin
- 3. Capturar la tecla de retroceso presionar en BlackBerry con jQueryMobile
- 4. Cómo atrapar la doble pulsación de la tecla en javascript?
- 5. Cómo prohibir la tecla de retroceso en WPF
- 6. ¿Cómo puedo aceptar la tecla de retroceso en el evento de pulsación de tecla?
- 7. Cómo atrapar event.keyCode y cambiarlo a otro código de tecla?
- 8. La tecla de retroceso no funciona en Vim/vi
- 9. ¿Cómo atrapar el evento con el botón de retroceso de hardware en Android?
- 10. jQuery: ¿tecla para la tecla TAB?
- 11. Enviar evento de tecla de retroceso para editar texto
- 12. tecla de retroceso para hacer estallar los espectáculos Fragmento fragmentos
- 13. Vim tecla de retroceso solo funciona en el nuevo texto
- 14. jQuery: keyPress ¿El retroceso no se disparará?
- 15. ¿Cómo atrapar la última iteración dentro de $ .each en jQuery?
- 16. jQuery: cómo capturar la tecla presionando live()
- 17. Cómo deshabilitar la tecla repetitiva en jQuery
- 18. Cómo atrapar el jQuery.event.trigger()?
- 19. evento desencadenado por la tecla de retroceso pero no borrar la clave
- 20. ¿Cómo correlacionar globalmente la tecla AltGr con la tecla Alt?
- 21. jQuery: Impedir la tecla enter
- 22. Cómo bloquear la tecla de retroceso en Android al usar Qt
- 23. Captura de "Eliminar" Pulsa la tecla con jQuery
- 24. Simular presionar la tecla de tabulación con jQuery
- 25. Jquery flecha tecla de navegación
- 26. WPF cuadro de texto no toma de entrada, el espacio y la tecla de retroceso funciona
- 27. Filtro de jQuery y retroceso Filtro
- 28. Usando alt + tecla de retroceso en la línea de comandos de vim para eliminar por palabras
- 29. Cómo atrapar la excepción UrlFetchApp.fetch
- 30. ¿hay un escucha predeterminado de la tecla de retroceso (en el dispositivo) en Android?
Solo para aclarar, quiero interceptar cuando se presiona la tecla de retroceso y realizar una acción. Estoy cambiando el estado habilitado de algunos botones en la página cuando se elimina el último carácter de un cuadro de texto. Por lo tanto, todavía quiero que la tecla de retroceso realice su operación normal. – ChrisP
Eso no es verdad. Aparece en los métodos keyup y keydown. Solo no aparece en presionar tecla. – Line
@RickSmith No estoy de acuerdo. La pregunta a la que se refiere es en JavaScript, mientras que OP está preguntando en jQuery. Puede haber alguna razón por la que alguien quiera la respuesta de uno u otro método. –