Regístrate para
recibir el boletín de
e-Contento.com. Ya somos 4356 suscriptores. [+]

Listado de Artículos  
 Cálculo de la letra del NIF
Algoritmo implementado en JavaScript con dos funciones. Una que dado un DNI te calcula la letra del NIF y otra que dado un NIF comprueba si es correcto. La complejidad de las operaciones es ínfima, pero hay que saber cómo se calcula esa letrita dichosa.
Añadir a Gennio Añadir a del.icio.us Añadir a Digg Añadir a Meneame Añadir a Technorati Suscribir a Bloglines Suscribir a Netvibes Suscribir a Google Suscribir a Windows Live Suscribir a Mi Yahoo! Sindicación RSS. Feed


Creacion de una libreria para validar el NIF y el DNI
Autor: Juan Antonio Jimenez
Fecha: 2001 12 12

La letra del NIF se genera conociendo únicamente el número del DNI. Aplicándole a éste una serie de transformaciones (modulo 23), se obtiene un número entre 0 y 22 que se corresponde con una letra del siguiente array.

letras = new Array();
letras[0] = "T";
letras[1] = "R";
letras[2] = "W";
letras[3] = "A";
letras[4] = "G";
letras[5] = "M";
letras[6] = "Y";
letras[7] = "F";
letras[8] = "P";
letras[9] = "D";
letras[10] = "X";
letras[11] = "B";
letras[12] = "N";
letras[13] = "J";
letras[14] = "Z";
letras[15] = "S";
letras[16] = "Q";
letras[17] = "V";
letras[18] = "H";
letras[19] = "L";
letras[20] = "C";
letras[21] = "K";
letras[22] = "E";


Ahora vamos a ver una función que dado un DNI te devuelve el NIF, que es el DNI concatenado con una letra que obtenemos de la forma anterior. Al DNI le aplicamos una serie de comprobaciones para ver que es un número de a lo sumo 8 dígitos.

function nif(dni){
dni = parseInt(dni);
if (dni > 99999999){
alert("Error. El DNI sólo tiene 8 dígitos")
}else{
letraDNI = letras[dni % 23];
dni = dni.toString();
nif = dni + letraDNI;
return nif
}
}


Ahora vamos a ver una función que dado un NIF te devuelve true si es un NIF correcto y false si es incorrecto.

function esNIFCorrecto(nif){
txtError = "";
ok = true;

dni=nif.substring(0,nif.length-1);
dni=parseInt(dni);
letra=nif.charAt(nif.length-1);
letraCorrecta = letras[ dni % 23];

if (dni > 99999999){
txtError += "El DNI tiene a lo sumo 8 cifras\n";
ok = false;
} else if(letra<"a" || letra>"Z"){
txtError += "El último carácter debe ser una letra"
ok = false;
} else if(letra!=letraCorrecta) {
txtError += "La letra correcta del NIF para "
txtError += "ese DNI es " + letraCorrecta + "\n";
ok = false;
}

if (ok) {
return true;
}else{
alert(txtError);
return false;
}
}


Si quieres bajarte el código fuente comentado puedes hacerlo aquí.

Madrid a 13 de diciembre de 2001
Juan Antonio Jiménez



volver
 RECOMENDAMOS
Madroñosfera
fotoMadrid
Sokoban en JavaScript
Directorio e-Contento

 MIS FOTOS...

 CITA
Soy lo suficientemente feo y lo suficientemente bajo como para triunfar por mí mismo. Woody Allen

Si con frecuencia añades poco a lo poco, llegarás a lo mucho Hesiodo



Mi ICQ es 44428945 contento@mixmail.com Visita mi otra web: www.fotoMadrid.com - fotografías, wallpapers y postales de Madrid