Bueno en el código JS tienes varios errores, voy a copiar el que tienes e ir comentándolo.
Código Javascript
:
Ver originalfunction valida_envia(frm){
nombre = frm.nombre.value.length ;//aquí en casi todos coges el campo su value y su length
apellido1 = frm.apellido1.value.length ; //pero es mejor coger sólo el campo porque sino
apellido2 = frm.apellido2.value.length ; // en el focus() tienes que poner todo el nombre o sino no funciona
ano = frm.ano;//aquí si está bien
nif = frm.nif;// además es mejor poner var delante de nif, o direccion, etc...
direccion = frm.direccion.value.length;
numero = frm.numero.value.length;
cpostal = frm.cpostal.value.length;
poblacion = frm.poblacion.value.length;
email = frm.email.value;
telefono = frm.telefono.value.length;
password = frm.password.value;
rpassword = frm.rpassword.value;
number = nif.substr(0,nif.length-1);
let = nif.substr(nif.length-1,1);
number = number % 23;
letra='TRWAGMYFPDXBNJZSQVHLCKET';
letra=letra.substring(numero,numero+1);
//valido el nombre
if ((nombre == 0 ) || (apellido1 == 0 ) || (apellido2 == 0 ) ) {
alert("Tiene que escribir su nombre y dos apellidos");
nombre.focus() // te falta ';' y ademas no creo que haga focus porque te estás refiriendo al length del campo, no al campo en sí
return 0;
}
if (ano <= 1910 && ano >= 1992 ) { // a mí no me gustaría que me tacharan de viejo pero supongo que serán exigencias xD
alert("Eres muy mayor o muy joven para esto");// además tendrías que validar si es un número (isNaN() o regExp)
ano.focus()// y no es && sino || porque el año no puede ser menor que 1910 y mayor que 1992
return 0;
}
if (letra!=let) {
alert('Dni erroneo');
nif.focus()
return 0;
}
if ((direccion == 0 ) || (numero == 0 ) ) {
alert("Por favor rellene dirección y numero");
direccion.focus()
return 0;
}
if (cpostal < 5 ) {
alert("El c.Postal debe de ser de 5 dígitos");
cpostal.focus()
return 0;
}
if (poblacion == 0 ) {
alert("Debes de rellenar el campo población");
poblacion.focus()
return 0;
}
if (/^w+([.-]?w+)*@w+([.-]?w+)*(.w{2,3})+$/.test(email)) {
alert("Debes de rellenar bien el campo Email");
email.focus()
return 0;
}
if (telefono < 9 ) {
alert("Introduce un teléfono correcto(9 dígitos)");
telefono.focus()
return 0;
}
if (password.length < 4 ) {
alert("la contraseña debe de ser entre 4 y 8 caracteres");// aquí te falta poner '|| password.length>8'
password.focus()
return 0;
}
if (rpassword != password) {
alert("Las contraseñas no coinciden, revíselo");
rpassword.focus()
return 0;
}
else{
return true;
alert("Muchas gracias por enviar el formulario");
}
}
Además no sé si poniendo return 0 es lo mismo que return false.
Saludos (: