Mira Igonfil, no tengo mucho tiempo de leer tu código ahora mismo pero io siempre uso esta función para validar los dnis y funciona
Código Javascript
:
Ver originalfunction compruebaDni(nif)
{
numero = nif.substr(0,nif.length-1);
let = nif.substr(nif.length-1,1);
numero = numero % 23;
letra='TRWAGMYFPDXBNJZSQVHLCKET';
letra=letra.substring(numero,numero+1);
if (letra!=let)
{
document.getElementById("username").value = "";
document.getElementById("dnimsg").style.color='red';
return (false);
}
else
{
document.getElementById("dnimsg").style.color= '#646464';
return (true);
}
};
Desde el formulario en php mando el valor del input text. Si tiene el formato adecuado(8 números y una letra) iamo a la función que te he puesto ahí arriba. En esta función v acío el campo y pongo el label de color rojo si en el evento onblur da faios.
Puedes adaptar fácilmente el código según tus necesidades.
Un saludo!!