Hola, creo que tienes varios errores en el código, vamos a depurarlo.
Código Javascript
:
Ver original<script type="text/javascript">
function validar(formulario) {
if (formulario.nombre.value.length < 4) {
alert("Escriba por lo menos 4 caracteres en el campo 'Nombre'.");
//aquí debes usar comillas simples
//para no dar a entender que finalizas la cadena
formulario.nombre.focus();
return (false);
}
var aceptados = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZÁÉÍÓÚabcdefghijklmnñopqrstuvwxyzáéíóú ";
var cadena = formulario.cadena.value;
var Validado = true;
for (i = 0; i < cadena.length; i++) {
ch = cadena.charAt(i);
for (j = 0; j < aceptados.length; j++){
if (ch == aceptados.charAt(j))
break;
if (j == aceptados.length) {
Validado = false;
break;
}
}
}
if (!Validado) {
alert("Escriba sólo letras en el campo 'cadena'.");
formulario.cadena.focus();
return (false);
}
//a partir de aquí tienes mal todos los nombres
//de las variables, porque ya han sido declaradas anteriormente.
//por tanto debes buscar otro, o ponerles el mismo nombre
//y una barra baja para que se diferencien
//además de eso no hay nada mal, pero en vez
//de ir carácter por carácter es más fácil usar la función isNaN()
var aceptados = "0123456789";
var cadena = formulario.tel.value;
var Validado = true;
var decPoints = 0;
var allNum = "";
for (i = 0; i < cadena.length; i++) {
ch = cadena.charAt(i);
for (j = 0; j < aceptados.length; j++)
if (ch == aceptados.charAt(j))
break;
if (j == aceptados.length) {
Validado = false;
break;
}
allNum += ch;
}
if (!Validado) {
alert("Escriba sólo dígitos en el campo 'Telefono'.");
formulario.tel.focus();
return (false);
}
if ((formulario.mail.value.indexOf ('@', 0) == -1)||(formulario.correo.value.length < 5)) {
alert("Escriba una dirección de correo válida en el campo "Mail".");
return (false);
}
return (true);
}
//en teoría este último if valida el mail, pero si
//te das cuenta, si yo pongo @aaaa me lo valida,
//por tanto debes usar una expresión regular.
//busca un poco por internet
</script>
También me fijé en que usas CSS pero sin embargo pones 400 para que te quede todo alineado, cuando es más fácil usar margin-left y margin-right.
Saludos (: