Foros del Web » Programando para Internet » Javascript »

Habilitar y deshabilitar la tecla Backspace

Estas en el tema de Habilitar y deshabilitar la tecla Backspace en el foro de Javascript en Foros del Web. Buenas noches: Este es mi dilema. Estoy desarrollando una aplicación y necesito deshabilitar la tecla backspace para evitar que el usuario, accidental o voluntariamente, regrese ...
  #1 (permalink)  
Antiguo 04/08/2011, 22:02
Avatar de freesoftwarrior  
Fecha de Ingreso: marzo-2006
Mensajes: 362
Antigüedad: 18 años, 1 mes
Puntos: 10
Habilitar y deshabilitar la tecla Backspace

Buenas noches:
Este es mi dilema. Estoy desarrollando una aplicación y necesito deshabilitar la tecla backspace para evitar que el usuario, accidental o voluntariamente, regrese en el historial del browser. Para ello utilizo el siguiente código:

Cita:
document.onkeydown = function()
{
e=window.event;
if(!window.event)return false;
if(e.keyCode == 37 && e.altKey==true )
{return false;}
if((e.keyCode == 116 || e.keyCode == 82) && e.ctrlKey==true)
{return false;}

if(window.event && window.event.keyCode == 116) //F5
{window.event.keyCode = 505;}
if(window.event && window.event.keyCode == 08) //BACKSPACE
{window.event.keyCode = 505;}
if(window.event && window.event.keyCode == 505)
{return false;}
}
Este es un código que además me permite deshabilitar la tecla F5.
Hasta aquí no hay ningún problema. Sin embargo encontré una "falla" en el concepto y es que, obviamente, el usuario no podrá ya usar la tecla backspace para corregir algo que haya escrito.

Y es ahí donde tengo el dilema. He estado tratando de ver la posibilidad de hacer algo como esto (figurativamente por cierto)


Cita:
<input type="text" name="datos" size="20" class="botonInput" onKeyPress="habilitarBackspace();" onBlur="deshabilitarBackspace();">
En resumen mi problema es el siguiente:
1. Necesito evitar que el usuario pueda regresar en el historial de navegación haciendo uso de la tecla backspace (el botón de retroceso del browser parece que no se puede deshabilitar)
2. Necesito habilitar, temporalmente y sólo en ciertos campos (input y text) la tecla backspace PERO SÓLO para la edición de datos más no para el retroceso en el historial (de ahí la idea de volver a habilitarla con el evento onBlur )

Si alguien tiene alguna idea o sugerencia, les voy a quedar muy agradecido.

Un saludo desde Lima, Perú
  #2 (permalink)  
Antiguo 04/08/2011, 22:14
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Habilitar y deshabilitar la tecla Backspace

buenas,
la verdad, me parece un tanto incoherente ya que, como has indicado, los botones de navegación del navegador no se pueden controlar. de todos modos y si así lo deseas, no creo que necesites de otra función para habilitar/inhabilitar el bloqueo. en la misma función (el handler del evento) puedes agregar lineas adicionales para determinar en que que elemento inicio el evento. si es un input text o un textarea, puedes prescindir del resto de las lineas haciendo una salida prematura. es decir, un return cuando las condiciones son dadas. para determinar el elemento, puedes usar el objeto event que se genera y leer la propiedad target/srcElement para obtener el resto de la información.

__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 05/08/2011, 08:02
Avatar de freesoftwarrior  
Fecha de Ingreso: marzo-2006
Mensajes: 362
Antigüedad: 18 años, 1 mes
Puntos: 10
Respuesta: Habilitar y deshabilitar la tecla Backspace

Muchas gracias por el comentario. Asunto solucionado.
Si tuvieras tiempo, ¿podrías revisar esta otra consulta mía y tal vez darme alguna sugerencia?

Encriptar u Ofuscar código javascript o archivos js

Etiquetas: backspace, deshabilitar, habilitar, tecla, botones
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:37.