Estoy intentando hacer un formulario que comprueba que rellenas todos los campos y que comprueba también que el email es correcto, es decir que tiene @, punto, etc.
El caso es que al validar el formulario cuando le doy a submit me ejecuta y la función que comprueba los campos pero no ejecuta el return false después de decirme que faltan varios campos por poner, lo he revisado de arriba a abajo peor no consigo entender porque no funciona. Os pongo el código por si podéis ayudarme, con la parte de comprobar el email creo que también me he liado pero bueno lo más urgente es que al darle a Enviar no me deje enviar el formulario si falta algun campo.
Código HTML:
<script type="text/javascript"> function vaciar(control) { control.value=''; } function mail(email){ var mailres = true; var cadena = "abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ1234567890@._-"; var arroba = document.formulario.email.indexOf("@",0); if ((document.formulario.email.lastIndexOf("@")) != arroba) arroba = -1; var punto = document.formulario.email.lastIndexOf("."); for (var contador = 0 ; contador < texto.length ; contador++){ if (cadena.indexOf(texto.substr(contador, 1),0) == -1){ mailres = false; break; } } if ((arroba > 1) && (arroba + 1 < punto) && (punto + 1 < (document.formulario.email.length)) && (mailres == true) && (document.formulario.email.indexOf("..",0) == -1)) mailres = true; else mailres = false; return mailres; } function validar(){ var txt = ""; var formulario = document.formulario; if (document.formulario.nombre.value.length==0){ txt = txt + "Debe que escribir su nombre\n"; } if (document.formulario.apellidos.value.length==0){ txt = txt + "Debe que escribir sus apellidos\n"; } if (document.formulario.email.value.length==0){ txt = txt + "Debe que escribir su email\n"; } else if (document.formulario.email.value.length!=0){ mail(email); } if (document.formulario.comentarios.value.length==0){ txt = txt + "Debe escribir sus comentarios\n"; } if(txt.length>0) { txt = "Los siguientes campos son obligatorios:\n\n" + txt; alert(txt); return false; } formulario.submit(); } </script> <form id="formulario" name="formulario" action="enviar_mail.php" method="post" > <fieldset> <legend>Formulario de Contacto</legend> <label for="nombre">*Nombre:</label> <input id="nombre" class="caja" type="text" name="nombre" accesskey="n" tabindex="1" value="Escriba aquí su nombre" onfocus="vaciar(this)" /> <br/> <label for="apellidos">*Apellidos:</label> <input name="apellidos" id="apellidos" class="caja" type="text" accesskey="a" tabindex="2" value="Escriba aquí su apellido" onfocus="vaciar(this)" /> <br/> <label for="email">*E-mail:</label><input name="email" id="email" class="caja" type="text" accesskey="c" tabindex="3" value="Escriba aquí su e-mail" onfocus="vaciar(this)" onblur="mail(email)" /> <br/> <label for="comentarios">*Comentarios:</label><textarea name="comentarios" id="comentarios" class="caja" cols="32" rows="6" accesskey="s" tabindex="4" onfocus="vaciar(this)" >Escriba aquí sus comentarios</textarea> <p class="enviar"> <input name="Submit" type="submit" accesskey="e" tabindex="5" onclick="validar();" value="Enviar" /> <input type="reset" value="Borrar" accesskey="b" tabindex="6" /></p> </fieldset> </form>