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:
En un formulario dispongo de un botón que me llama a una función principal que hace más comprobaciones con otros campos.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; } } }
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.