Solución: Coloque el código siguiente hacia el final de todas las páginas que contienen formas:
<!-- Block the Backspace and Enter keys in forms, outside of input texts and textareas -->
<script type="text/javascript">
function blockBackspaceAndEnter(e) {
if (!e) { // IE reports window.event instead of the argument
e = window.event;
}
var keycode;
if (document.all) {
// IE
keycode = e.keyCode;
} else {
// Not IE
keycode = e.which;
}
// Enter is only allowed in textareas, and Backspace is only allowed in textarea and input text and password
if ((keycode == 8
&& e.srcElement.type != "text"
&& e.srcElement.type != "textarea"
&& e.srcElement.type != "password")
|| (keycode == 13 && e.srcElement.type != "textarea")) {
e.keyCode = 0;
if (document.all) {
// IE
event.returnValue = false;
} else {
// Non IE
Event.stop(e);
}
}
}
for (var i = 0; i < document.forms.length; i++) {
document.forms[i].onkeydown = blockBackspaceAndEnter;
}
</script>
que tengo los siguientes comentarios sobre lo que otras personas respondieron aquí antes:
Alguien dijo:
"Por favor, no. Usuarios como backspace-to-go-back; . Va hacia atrás se uno de los navegadores más vital características y su ruptura es intolerablemente grosero"
Mi respuesta a él es:
Sí, por lo general la gente hace uso de la tecla Atrás para volver , PERO NO en las páginas con FORMULARIOS. Por otro lado, es muy fácil para las personas a accidentalmente haga clic cerca o fuera de un texto de entrada o área de texto, y luego presione el botón de retroceso, por lo que se pierden todas sus ediciones, como otra persona también notó:
"los usuarios no están en un cuadro de texto y pulsa la tecla de retroceso , perdiendo por completo toda la información la forma que acaba de entrar. normalmente no sería un problema, pero para nosotros, estamos llenando un montón de texto en formularios de estado largos ".
La misma comportamiento no deseado también puede decirse de la tecla Enter para enviar el formulario, que por lo general es sólo deseable (o nunca) para las pequeñas formas con algunos campos, pero no para formularios con muchos campos y cuadros de selección y cuadros de entrada y áreas de texto, en los que la mayoría de las veces NO QUIERE que se envíe el formulario cuando presiona Entrar.
Por eso sugiero el código anterior, que se aplica a todas las formas <FORM> la función sugerida por webster, pero sin las verificaciones de ALT, que no creo que sea útil y sin las verificaciones de CTRL + N y CTRL + R y CTRL + F5, que no queremos bloquear, porque cuando se utilizan NO son accidentales.
Desafortunadamente, el código de arriba no funciona en Firefox cuando tiene DIVs y TABLE dentro de su FORMULARIO! Esto se debe a que el evento de pulsación parece no propagarse al formulario que lo contiene, y en su lugar se aplica el comportamiento predeterminado (¡NO DESEADO!) Para las teclas Retroceso e Intro. Todavía no he podido encontrar una solución para este ...
Por favor, no lo hacen. A los usuarios les gusta backspace-to-go-back; volver es una de las características más vitales del navegador y romperla es intolerablemente grosero. Si cometieron un error, siempre pueden seguir adelante.(A menos que su aplicación web se rompa cuando regrese, en cuyo caso tendrá problemas mayores de los que preocuparse). – bobince
¿Cuál es el motivo para evitar que los usuarios vuelvan a la página anterior? Incluso si ha bloqueado el retroceso, el usuario podría seguir utilizando el botón Atrás del navegador o Alt + ←. –
I _hate_ backspace-to-go-back. Alt-Izquierda (o Cmd-Izquierda para aquellos de ustedes con teclados tontos) trabaja para hacer lo mismo y no se teclea accidentalmente en formularios (evitando así la pérdida de todos los trabajos de entrada de formularios antes de la pulsación de erroneo). – sblom