Foros del Web » Programando para Internet » Javascript »

Problema en Firefox con funcion DNI

Estas en el tema de Problema en Firefox con funcion DNI en el foro de Javascript en Foros del Web. Buenas, Encontre la siguiente funcion en JS para calcular la letra del DNI automaticamente. El caso es que en IE6, 7 y 8 si funciona, ...
  #1 (permalink)  
Antiguo 03/06/2009, 15:48
Avatar de carscx  
Fecha de Ingreso: noviembre-2008
Mensajes: 227
Antigüedad: 15 años, 5 meses
Puntos: 10
Problema en Firefox con funcion DNI

Buenas,

Encontre la siguiente funcion en JS para calcular la letra del DNI automaticamente. El caso es que en IE6, 7 y 8 si funciona, pero en Firefox no.

Esta es la funcion:
Código JavaScript:
Ver original
  1. function calcularNIF(dni) {
  2.  
  3.   if (!/^\d{8}$/.test(dni)) {
  4.  
  5.    alert ("El numero introducido no es valido");
  6.  
  7.    return false;
  8.  
  9.   }
  10.  
  11.  
  12.  
  13.   var letras = 'TRWAGMYFPDXBNJZSQVHLCKE';
  14.  
  15.   var numero = dni%23;
  16.  
  17.   alta_cliente.letra.value = letras.substring(numero,numero+1);
  18.  
  19.   return true;
  20.  
  21.  }

Y estos los campos del formulario:
Código HTML:
Ver original
  1. <p>DNI</p></td><td><input type="text" class="dni" value="DNI" name="dni" onKeypress="if (event.keyCode < 45 || event.keyCode > 57) event.returnValue = false;" onBlur="calcularNIF(this.value);" maxlength="8"onFocus="clearText(this)" /><input type="text" class="letradni" onfocus="this.blur()" name="letra" maxlength="1" size="1">

No se cual puede ser el fallo, espero vuestra ayuda, muchas gracias.
__________________
Frontend Developer
JS+HTML5+CSS3
Backend Developer
PHP+MySQL
  #2 (permalink)  
Antiguo 03/06/2009, 16:34
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Problema en Firefox con funcion DNI

Revisa la Consola de Errores.

Por un lado, prueba usando document.getElementById() con el id para hacer referencia a los elementos del formulario.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 03/06/2009, 16:40
Avatar de carscx  
Fecha de Ingreso: noviembre-2008
Mensajes: 227
Antigüedad: 15 años, 5 meses
Puntos: 10
Respuesta: Problema en Firefox con funcion DNI

¿Que consola de errores? Perdona mi ignorancia, pero no tengo ni idea de JS, donde le tengo que aplicar el document.getElementById() en el formulario o en la función.

gracias de antemano
saludos,
__________________
Frontend Developer
JS+HTML5+CSS3
Backend Developer
PHP+MySQL
  #4 (permalink)  
Antiguo 03/06/2009, 21:16
Avatar de buzu  
Fecha de Ingreso: octubre-2006
Ubicación: San Francisco, CA
Mensajes: 2.168
Antigüedad: 17 años, 6 meses
Puntos: 122
Respuesta: Problema en Firefox con funcion DNI

imagino que alta_cliente es el valor del name de tu formulario. Puedes probar con document.forms['alta_cliente']['letra'].value en lugar de alta_cliente.letra.value
__________________
twitter: @imbuzu
  #5 (permalink)  
Antiguo 04/06/2009, 01:30
Avatar de carscx  
Fecha de Ingreso: noviembre-2008
Mensajes: 227
Antigüedad: 15 años, 5 meses
Puntos: 10
Respuesta: Problema en Firefox con funcion DNI

Cita:
Iniciado por buzu Ver Mensaje
imagino que alta_cliente es el valor del name de tu formulario. Puedes probar con document.forms['alta_cliente']['letra'].value en lugar de alta_cliente.letra.value
Con eso me funciono a la perfección muchas gracias.

Hay otro asunto, que es que tengo en ese mismo campo bloqueado para que no entren letras y solo numeros en IE lo consegui con el siguiente atributo en el campo del formulario. Pero en Firefox no funciona.

Código:
   1.
      <p>DNI</p></td><td><input type="text" class="dni" value="DNI" name="dni" onKeypress="if (event.keyCode < 45 || event.keyCode > 57) event.returnValue = false;" onBlur="calcularNIF(this.value);" maxlength="8"onFocus="clearText(this)" /><input type="text" class="letradni" onfocus="this.blur()" name="letra" maxlength="1" size="1">
Es el que remarco en rojo
__________________
Frontend Developer
JS+HTML5+CSS3
Backend Developer
PHP+MySQL
  #6 (permalink)  
Antiguo 04/06/2009, 06:34
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Problema en Firefox con funcion DNI

Es que para los navegadores que no son Internet Explorer es event.which en lugar de event.keyCode y event.preventDefault() para cancelar la acción del evento en lugar de event.returnValue = false.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 04/06/2009, 07:57
Avatar de carscx  
Fecha de Ingreso: noviembre-2008
Mensajes: 227
Antigüedad: 15 años, 5 meses
Puntos: 10
Respuesta: Problema en Firefox con funcion DNI

Entonces dejara de funcionar en IE???
__________________
Frontend Developer
JS+HTML5+CSS3
Backend Developer
PHP+MySQL
  #8 (permalink)  
Antiguo 04/06/2009, 08:34
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Problema en Firefox con funcion DNI

Debes usar condicionales para que funcione en ambos:
Código Javascript:
Ver original
  1. key = event.which || event.keyCode;
Y para cancelar la acción del evento:
Código Javascript:
Ver original
  1. if (event.preventDefault) {
  2.     event.preventDefault();
  3. } else {
  4.     event.returnValue = false;
  5. }
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
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 20:51.