Ver Mensaje Individual
  #13 (permalink)  
Antiguo 26/04/2006, 04:29
zekenet
 
Fecha de Ingreso: junio-2005
Ubicación: Madrid, España
Mensajes: 288
Antigüedad: 18 años, 9 meses
Puntos: 1
es en javascript

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";


function nif(dni){
//dado un DNI te devuelve el NIF
dni = parseInt(dni); //con esto le quitariamos los ceros que tenga por delante
if (dni > 99999999){
alert("Error. El DNI sólo tiene 8 dígitos")
}else{
letraDNI = letras[dni % 23];
dni = dni.toString(); //lo convertimos a String para poderlo concatenar con la letra
nif = dni + letraDNI;
return nif
}
}

function esNIFCorrecto(dni,letra){
//dado un NIF te devuelve si es o no correcto
txtError = ""; //texto que se mostraría en caso de error
correcto = true; //variable booleana que controla si hay algún error
dni=parseInt(dni); //al convertirlo a entero, le quitamos los ceros de la izquierda
letraCorrecta = letras[ dni % 23]; //la letra que debería ser para ese DNI
letra = letra.toUpperCase();
if (dni > 99999999){
txtError += "El DNI tiene a lo sumo 8 cifras\n";
correcto = false;
} else if(!isNaN(letra)){
txtError += "El último carácter del NIF debe ser una letra"
correcto = false;
} else if(letra!=letraCorrecta) {
txtError += "El NIF introducido no es correcto";
correcto = false;
}

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