Foros del Web » Programando para Internet » Javascript »

Como puede ser que no funcione en firefox

Estas en el tema de Como puede ser que no funcione en firefox en el foro de Javascript en Foros del Web. Hola que tal gente de FDW. Mi problema es el siguiente: estoy empezando a hacer una calculadora en javascript usando en parte jquery. Por ahora ...
  #1 (permalink)  
Antiguo 09/06/2011, 18:08
 
Fecha de Ingreso: diciembre-2010
Mensajes: 51
Antigüedad: 13 años, 5 meses
Puntos: 2
Exclamación Como puede ser que no funcione en firefox

Hola que tal gente de FDW.

Mi problema es el siguiente: estoy empezando a hacer una calculadora en javascript usando en parte jquery.
Por ahora la funcionalidad sería la siguiente:
- Hay 2 inputs number
- Cuando en el primero se aprieta "+","-","*", ó "/" se escribe el signo presionado entre el espacio de los dos inputs
- Por último hace un .focus() en el segundo input. (Esto no funciona en firefox no porque sea un bug sino porque "es un privilegio" que tienen los usuarios de firefox)

Lo pueden ver online aquí: http://planeta3d.net/calc_prueba/
Si no quieren ver el codigo de fuente, aquí se los dejo:
Código Javascript:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html>
  3.     <head>
  4.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5.         <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
  6.         <script type="text/javascript">
  7.         $(document).ready(function() {
  8.            
  9.             $('#a').keypress(function() {
  10.             var key_code = window.event.keyCode;
  11.             switch (key_code) {
  12.                 case 43:
  13.                 // +
  14.                 var operando = ' + ';
  15.                 event.preventDefault();
  16.                 $('#b').focus();
  17.                 break
  18.                 case 45:
  19.                 // -
  20.                 var operando = ' - ';
  21.                 $('#b').focus();
  22.                 event.preventDefault();
  23.                 break
  24.                 case 42:
  25.                 // *
  26.                 var operando = ' * ';
  27.                 $('#b').focus();
  28.                 event.preventDefault();
  29.                 break
  30.                 case 47:
  31.                 // /
  32.                 var operando = ' / ';
  33.                 $('#b').focus();
  34.                 event.preventDefault();
  35.                 break
  36.                 default:
  37.                 var operando = '&nbsp;'
  38.                 break
  39.             }
  40.             $('.operando').html(operando);
  41.             });
  42.             $('#form').submit(function() {
  43.                 event.preventDefault();
  44.                 document.write('probando');
  45.             });
  46.         });
  47.         </script>
  48.         <style type="text/css">
  49.             #a, .operando {
  50.                 float: left;
  51.             }
  52.             .operando {
  53.                 padding-right: 4px;
  54.             }
  55.         </style>
  56.         <title>Calc</title>
  57.     </head>
  58.     <body>
  59.         <form method="post" action="index.php" id="form">
  60.             <input type="number" name="a" size="20" id="a"  />
  61.             <div class="operando"> </div>
  62.             <input type="number" name="b" size="20" id="b"  />
  63.             <input type="submit" name="submit" id="submit"  />
  64.         </form>
  65.     </body>
  66. </html>

Por favor fígense con cualquier navegador, inclusive con IE 7 .
Si en firefox les funciona, háganmelo saber por favor.
Desde ya, gracias
Saludos
  #2 (permalink)  
Antiguo 09/06/2011, 19:47
 
Fecha de Ingreso: diciembre-2010
Mensajes: 51
Antigüedad: 13 años, 5 meses
Puntos: 2
Respuesta: Como puede ser que no funcione en firefox

Alguien ha probado ya la web con firefox. Por favor respondan :)
  #3 (permalink)  
Antiguo 09/06/2011, 21:04
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: Como puede ser que no funcione en firefox

buenas,
te recomiendo que instales el addons firebug. en la consola recibiras reportes de posibles errores. en fin, en firefox el objeto event no se genera en el ambito global. de hecho, eso es una implementacion incorrecta de iexplorer. que otros navegadores (ej. chrome) lo acepten, es por pura compatibilidad con codigos no estandar. el objeto event se obtiene como parametro del handler registrado en el evento. es decir, la funcion anonima que le pasas a keypress debe recibir dicho objeto.

pd: si estas esperando una respuesta a un tema, por favor, mantenga paciencia.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #4 (permalink)  
Antiguo 09/06/2011, 23:04
 
Fecha de Ingreso: noviembre-2005
Mensajes: 426
Antigüedad: 18 años, 5 meses
Puntos: 87
Respuesta: Como puede ser que no funcione en firefox

zerokilled esta en lo correcto; en practica significa...

Remplaze esto:

Código Javascript:
Ver original
  1. $('#a').keypress(function() {
  2. var key_code = window.event.keyCode;

por esto:

Código Javascript:
Ver original
  1. $('#a').keypress(function(event) {
  2. var key_code = event.keyCode;

---------------------------------------

Por cierto, ten en cuenta que con eval() de javascript puedes realizar todas las operaciones, por ejemplo si escribe 1+1 en #a efectivamente le mostrara "2"

Código Javascript:
Ver original
  1. $(document).ready(function() {
  2.             $("#form").submit(function(){
  3.                 var operacion = $("#a").val();
  4.                 alert(eval(operacion))  
  5.                 return false;
  6.             })
  7.         });

Última edición por InKarC; 09/06/2011 a las 23:10
  #5 (permalink)  
Antiguo 10/06/2011, 20:34
 
Fecha de Ingreso: diciembre-2010
Mensajes: 51
Antigüedad: 13 años, 5 meses
Puntos: 2
Respuesta: Como puede ser que no funcione en firefox

@zerokilled gracias por tu pronta respuesta. Perdón que sea impaciente, lo que pasa es que estos rollo me comen la cabeza! Efectivamente como decías el conflicto estaba en la línea que marcó @InKarC
______________________

@InKarC muchas gracias , el código que me diste funciona a la perfección.

Ahora el único problema que queda es que firefox no reconoce + - * / , el número que les asigna a cada uno es 0 !
Pero igual eso ya es problema mío. Gracias por la ayuda!
Si encuentro alguna solución al último problema, posteo el code
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 12:10.