Foros del Web » Programando para Internet » Javascript »

Problema window.event.keyCode firefox

Estas en el tema de Problema window.event.keyCode firefox en el foro de Javascript en Foros del Web. Después de darme cuenta de que el objeto keyCode no funciona en Firefox, utilicé el evento event.wich y funcionó!! @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver ...
  #1 (permalink)  
Antiguo 17/06/2010, 08:41
 
Fecha de Ingreso: marzo-2008
Mensajes: 220
Antigüedad: 16 años, 1 mes
Puntos: 0
Problema window.event.keyCode firefox

Después de darme cuenta de que el objeto keyCode no funciona en Firefox, utilicé el evento event.wich y funcionó!!

Código Javascript:
Ver original
  1. function chekcEntry(obj, e){
  2.  
  3.   tecla = (document.all) ? e.keyCode : e.which;
  4.   return (tecla > 47 && tecla < 58);
  5.  
  6. }
  7.  
  8. <input type="text" name="textField" onkeypress=\"return checkEntry(this, event); />

El problema es que según vas escribiendo en el input no hay opción de modificar el input:

Imagina que escribo: 123

Con el cursor todavía en el campo no puedo moverme a través de dichos número, ni borrarlos con el backspace, etc...

¿Alguien tiene alguna solución?
  #2 (permalink)  
Antiguo 17/06/2010, 08:49
Avatar de America|UNK  
Fecha de Ingreso: noviembre-2006
Ubicación: Piura - Perú
Mensajes: 582
Antigüedad: 17 años, 5 meses
Puntos: 56
Respuesta: Problema window.event.keyCode firefox

Solo estas permitiendo teclas numéricas, averigua el código de las teclas de flechas, backspace y las que quieras permitir y agrégalos a la condición del return, si devuelve false, la tecla no funcionará dentro del campo eso tenlo en cuenta.
__________________
/* El que atiende, entiende..., el que entiende, aprende!.
Desarrollo Web Freelance, Contactar */
  #3 (permalink)  
Antiguo 17/06/2010, 09:02
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Problema window.event.keyCode firefox

debes de modificar para devolver true en caso de que e keycode corresponda a esas teclas:

backspace: 8
flechas: 37 38 39 40, pero ya las cubres, pero en el evento onkeypress FF devuelve 0 en tecla para ellas.

he aquí mis funciones:

Código Javascript:
Ver original
  1. var _charmiles = ',';    //separador de miles
  2. var _chardecimal = '.';    //separador de la parte decimal
  3. function inputInt(e,minus){
  4.     var menos = minus || false;
  5.     if(e==null){
  6.         e=event;
  7.     }
  8.     if(e==null){
  9.         e=window.event;
  10.     }
  11.     var tecla = (document.all) ? e.keyCode : e.which;
  12.     //48=0,57=9, 45=menos
  13.     if(tecla==8)return true;//backs
  14.     if(tecla==0 && !document.all)return true;//solo FF en keypress de flechas
  15.     if (tecla==45){
  16.         if (!menos){
  17.             return false;
  18.         }
  19.     }else if(tecla < 48 || tecla > 57){
  20.         return false;
  21.     }
  22.     return true;
  23. }
  24. function inputFloat(e,minus){
  25.     var menos = minus || false;
  26.     if(e==null){
  27.         e=event;
  28.     }
  29.     if(e==null){
  30.         e=window.event;
  31.     }
  32.     var tecla = (document.all) ? e.keyCode : e.which;
  33.     //48=0,57=9, 45=menos
  34.     if(tecla==0 && !document.all)return true;//solo FF en keypress de flechas
  35.     if(tecla==8)return true;//backs
  36.     if(tecla==_chardecimal.charCodeAt(0)) return true; //punto decimal
  37.     if (tecla==45){
  38.         if (!menos){
  39.             return false;
  40.         }
  41.     }else if(tecla < 48 || tecla > 57){
  42.         return false;
  43.     }
  44.     return true;
  45. }

uso:
<input type="text" onkeypress="return inputFloat(event,true);" />
  #4 (permalink)  
Antiguo 17/06/2010, 09:25
 
Fecha de Ingreso: marzo-2008
Mensajes: 220
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Problema window.event.keyCode firefox

Perfecto!!

Muchisimas grácias a los 2!!

Cita:
Iniciado por maycolalvarez Ver Mensaje
debes de modificar para devolver true en caso de que e keycode corresponda a esas teclas:

backspace: 8
flechas: 37 38 39 40, pero ya las cubres, pero en el evento onkeypress FF devuelve 0 en tecla para ellas.
Es un poco mosqueante lo del comportamiento de los navegadores pero la vida es dura... :)
  #5 (permalink)  
Antiguo 17/06/2010, 11:07
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema window.event.keyCode firefox

Si no les molesta, me gustaría hacer una sugerencia:
No prueben por document.all, existe en Opera por "compatibilidad", pero no existe en Firefox ni en ningún navegador basado en WebKit. Es decir, "!document.all" se cumple para Firefox y los webkit, como mínimo. Recuerden que la web no es solamente IE y Firefox.

El tema de la detección de caracteres es muy complejo, fíjense en estos artículo de quirksmode, sobretodo en el tercero que es específico del tema:
http://www.quirksmode.org/js/introevents.html
http://www.quirksmode.org/dom/events/index.html
http://www.quirksmode.org/js/keys.html

Saludos.

Etiquetas: firefox
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 04:20.