Ver Mensaje Individual
  #3 (permalink)  
Antiguo 17/06/2010, 09:02
Avatar de maycolalvarez
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);" />