Foros del Web » Programando para Internet » Javascript »

Validación DNI

Estas en el tema de Validación DNI en el foro de Javascript en Foros del Web. Hola, Estoy buscando una función JS que me valide de una pasada si un dni español es valido, esto es, no solo que la letra ...
  #1 (permalink)  
Antiguo 08/09/2003, 03:00
 
Fecha de Ingreso: mayo-2003
Mensajes: 125
Antigüedad: 21 años
Puntos: 0
Sonrisa Validación DNI

Hola,

Estoy buscando una función JS que me valide de una pasada si un dni español es valido, esto es, no solo que la letra sea correcta sino lo siguiente: nueve posiciones, con digitos en los 8 primeros y una letra resultado del algoritmo aplicado a esos 8 digitos en la novena posición (Ej: 12345678T)

En tejedoresdelweb.com he encontrado bastantes validaciones que he ido usando, otras me las he compuesto pero esta seguro que ya está y no tengo que reinventar la rueda.

Muchas gracias
__________________
Lailuluelo
El error está en lo obvio
  #2 (permalink)  
Antiguo 08/09/2003, 05:49
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola, lailuluelo.

Para empezar, te paso este código que devuelve la letra del NIF. El resto creo que no te costará mucho completarlo tú mismo:
Código PHP:
function nif(dni) {
    var 
numero dni 23 1;
    
letra='TRWAGMYFPDXBNJZSQVHLCKET';
    
letra=letra.substring(numero-1,numero);
    return 
letra;
  } 
Saludos,
  #3 (permalink)  
Antiguo 08/09/2003, 08:53
 
Fecha de Ingreso: mayo-2003
Mensajes: 125
Antigüedad: 21 años
Puntos: 0
Sonrisa Ahi va una solucion

Bueno, seguro que se puede optimizar pero funciona, gracias a todos. Os paso el codigo total JS para controlar un dni válido.

Código PHP:
<SCRIPT language="Javascript">

function 
isDigit (c)
{   return ((
>= "0") && (<= "9"))
}

function 
nif(dni) {
    var 
numero dni 23 1;
    
letra='TRWAGMYFPDXBNJZSQVHLCKET';
    
letra=letra.substring(numero-1,numero);
    return 
letra;
  }

function 
es_correcto () {
var 
i;
var 
dni=document.form.dni.value;
for (
08i++)
    {   
        var 
dni.charAt(i);
        if (!
isDigit(c)) {
            return 
false;
        }
    }
    var 
letra_introducido nif(dni.substring(0,8));
    var 
letra_real dni.charAt(8);
    if (
letra_introducido == letra_real) { 
        return 
true;
    } else { 
alert ("Debe introducir un dni válido");
             return 
false;
    }         
}


</SCRIPT> 
Cuidaros
__________________
Lailuluelo
El error está en lo obvio
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:20.