Buenas a todos
Conseguí por internet un par de funciones que trabajan unidas para validar si en un campo ha sido escrito correctamente un CIF o un NIF.
Código:
function valcif(cif){
par = 0;
non = 0;
letras="ABCDEFGHKLMNPQS";
let=cif.charAt(0);
if (!isNaN(let)){
nif=cif;
valnif(nif);
return false;
}
if (letras.indexOf(let.toUpperCase())==-1){
alert("El comienzo del Cif no es válido");
return false;
}
for (zz=2;zz<8;zz+=2)
par = par+parseInt(cif.charAt(zz));
for (zz=1;zz<9;zz+=2){
nn = 2*parseInt(cif.charAt(zz));
if (nn > 9)
nn = 1+(nn-10);
non = non+nn;
}
parcial = par + non;
control = (10 - ( parcial % 10));
if (control==10)
control=0;
if (control!=cif.charAt(8)){
alert("El Cif no es válido");
return false;
}
}
function valnif(nif){
dni=nif.substring(0,nif.length-1);
let=nif.charAt(nif.length-1);
if (!isNaN(let)){
alert('Falta la letra del Nif');
return false;
}
else{
cadena = "TRWAGMYFPDXBNJZSQVHLCKET";
posicion = dni % 23;
letra = cadena.substring(posicion,posicion+1);
if (letra!=let.toUpperCase()){
alert("Nif no válido");
return false;
}
}
}
En un formulario dispongo de un botón que me llama a una función principal que hace más comprobaciones con otros campos.
Desde esa función llamo a estas dos validadoras cif/nif de la siguiente manera:
if (!valcif(f.nif.value))
return false;
Pensaba que me si las que validan lo hacían todo devolverían "true" y podría seguir con el resto de las operaciones, pero siempre devuelven "false" aunque no se quejen con ningun alert y en el cuadro haya escrito un valor correcto.
Además siempre se queda parado el conjunto porque no se como continuarla..
Gracias de antemano por la ayuda.
Un saludo.