|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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. |
|
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 |
|
|
|
|
|
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
|
|