No había vuelto a ver este mensaje.
Interesante.
Bueno, aquí dejo el código que he hecho yo. Gracias a la documentación aportada por KarlanKas. No sabía cómo se calculaba el cif.
Código:
<script>
/*******************************
Validación del nif/nif. Por Carlitos. [email protected]
Si usas este script, deja intactas estas líneas (créditos). Vale?
También te agradecería un e-mail con tus comentarios.
Idea original de validación de cif de KarlanKas
*******************************/
function cif(cif)
{
par = 0
non = 0
letras="ABCDEFGHKLMNPQS"
let=cif.charAt(0)
if (!isNaN(let))
{
nif=cif
validar(nif)
return false
}
if (cif.length!=9)
{
alert('El Cif debe tener 9 dígitos')
document.formulario.nif.focus()
return false
}
if (letras.indexOf(let.toUpperCase())==-1)
{
alert("El comienzo del Cif no es válido")
document.formulario.nif.focus()
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!=cif.charAt(8))
{
alert("El Cif no es válido")
document.formulario.nif.focus()
return false
}
alert("El Cif es válido")
}
function validar(abc)
{
dni=abc.substring(0,abc.length-1)
let=abc.charAt(abc.length-1)
if (!isNaN(let))
{
alert('Falta la letra')
document.formulario.nif.focus()
return false
}
else
{
cadena="TRWAGMYFPDXBNJZSQVHLCKET"
posicion = dni % 23
letra = cadena.substring(posicion,posicion+1)
if (letra!=let.toUpperCase())
{
alert("Nif no válido")
document.formulario.nif.focus()
return false
}
}
alert("Nif válido")
}
</script>
<body>
<form name="formulario">
NIF/CIF: <input type="text" name="nif" onblur="cif(this.value)">
</form>
</body>
Pruébalo y me cuentas.