Foros del Web » Programando para Internet » Javascript »

script solo funciona en IE

Estas en el tema de script solo funciona en IE en el foro de Javascript en Foros del Web. Saludos maestros, quería ver si pueden ayudarme, después de crear este tema http://www.forosdelweb.com/f13/campo-texto-con-js-907441/ me puse a investigar sobre lo que me indicó maycolalvarez y me ...
  #1 (permalink)  
Antiguo 27/04/2011, 15:52
Avatar de schulz  
Fecha de Ingreso: diciembre-2010
Ubicación: Santiago
Mensajes: 22
Antigüedad: 11 años, 7 meses
Puntos: 0
Pregunta script solo funciona en IE

Saludos maestros, quería ver si pueden ayudarme, después de crear este tema http://www.forosdelweb.com/f13/campo-texto-con-js-907441/
me puse a investigar sobre lo que me indicó maycolalvarez y me topé este script que hace algo muy similar a lo que necesito (necesito que en un campo de texto solo se pueda ingresar numeros de esta forma 99.99 ) este script lo que hace es permitir números similares a lo que necesito solamente que el ingreso que permite hacer es infinito me explico puedo escribir números de esta forma 222222infinitamente.22, osea luego de poner el punto solo permite dos decimales(lo que está bien) lo que me gustaría hacer es que antes del punto solo se puedan ingresar dos números.
El otro problema es que el código solo sirve en IE ya lo probé en FF y chrome.
Que debo hacer para que sea estándar en cualquier navegador?
Soy novato en JS pero con muchas ganas de aprender.

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. <!--
  3. function fieldNumber (objeto)
  4. {
  5. var valorCampo;
  6. var evento_key = window.event.keyCode;
  7. var numPosPunto = 0;
  8. var strParteEntera = "";
  9. var strParteDecimal = "";
  10. var NUM_DECIMALES = 2;
  11.  
  12. switch (evento_key)
  13. {
  14. case 48:
  15. case 49:
  16. case 50:
  17. case 51:
  18. case 52:
  19. case 53:
  20. case 54:
  21. case 55:
  22. case 56:
  23. case 57:
  24. case 46:
  25. break;
  26. default:
  27. window.event.keyCode = 0;
  28. return false;
  29. }
  30.  
  31. valorCampo = objeto.value;
  32. if (evento_key == 46)
  33. if (valorCampo.indexOf(".") != -1)
  34. {
  35. window.event.keyCode = 0;
  36. return false;
  37. }
  38. /* Sólo puede teclear el número de decimales indicado en NUM_DECIMALES */
  39. if ((numPosPunto = valorCampo.indexOf(".")) != -1)
  40. {
  41. strParteEntera = valorCampo.substr(0,(numPosPunto - 1));
  42. strParteDecimal = valorCampo.substr((numPosPunto + 1), valorCampo.length)
  43. if (strParteDecimal.length > (NUM_DECIMALES - 1))
  44. {
  45. window.event.keyCode = 0;
  46. return false;
  47. }
  48. }
  49. return true;
  50. }
  51.  
  52. //-->
  53. </script>

Código HTML:
<body>

<input type="text" name="txtImporte" onkeypress="fieldNumber(this)"> 
</body> 
Saludos y suerte.
  #2 (permalink)  
Antiguo 27/04/2011, 16:26
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 14 años, 3 meses
Puntos: 528
Respuesta: script solo funciona en IE

Mira si te sirve esta funcion que yo uso (la modifiqué de una que encontré por ahí)

Código Javascript:
Ver original
  1. function number_format(num,formato) {
  2. num = num.toString().replace(/\$|\,/g,'');
  3. if(isNaN(num))
  4. num = "0";
  5. sign = (num == (num = Math.abs(num)));
  6. num = Math.floor(num*100+0.50000000001);
  7. cents = num&#37;100;
  8. num = Math.floor(num/100).toString();
  9. if(cents<10)
  10. cents = "0" + cents;
  11. for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
  12. num = num.substring(0,num.length-(4*i+3))+','+
  13. num.substring(num.length-(4*i+3));
  14. if(formato=="moneda")
  15.     return (((sign)?'':'-') + '$' + num + '.' + cents);
  16. if(formato=="decimal")
  17.     return (((sign)?'':'-') +  num + '.' + cents);
  18. if(formato=="entero")
  19.     return (((sign)?'':'-') +  num );
  20. else
  21.     return (((sign)?'':'-') + '$' + num + '.' + cents);
  22. }

Su uso es muy sencillo:
<input type="text" name="mivalor" onchange="this.value=number_format(this.value,'dec imal');">

Así si el usuario no pone decimales la funcion los asigna en automático, y ya sólo necesitas comprobar que no exceda el valor que tu quieras.

Etiquetas: Ninguno
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 05:24.