Estoy creando un formulario que, antes de enviar nada, valida los datos con Javascript. Hago varias validaciones correctamente, así que hasta ahi todo bien.
El tema está en que también tengo que comprobar si el correo que ha introducido el usuario ya se encuentra en la base de datos, por tanto se debe hacer con AJAX porque tengo que ejecutar un fichero PHP sin recargar la web. Este es el código:
Código Javascript:
Ver original
function validarCorreo() { var email = document.getElementsByName("c_email")[0].value; //Obtengo el email que ha introducido el usuario $.ajax({ type: "post", //Petición por POST url: "./account/checkCreateErrors.php", //Fichero PHP que necesito ejecutar para comprobar si el email ya existe data: { "c_email" : email }, //Le envío el email como parámetro success: function(result) { //Tras obtener el resultado -> if(result == "exist") { //Si el correo existe muestro un mensaje de error y devuelvo false para que no se envíe el formulario var p = document.getElementsByName("c_error_email"); p[0].style.height = "auto"; p[0].style.opacity = 1; return false; } else { //Si no existe oculto el mensaje de error var p = document.getElementsByName("c_error_email"); p[0].style.height = "0px"; p[0].style.opacity = 0; } } }); }
Se hace todo a la perfección (tanto la comprobación como la obtención del resultado y la impresión del mensaje de error), el único inconveniente es que ¡pase lo que pase me recarga la web!.
Como podéis observar, si el correo ya existe se devuelve "false" lo cual lo recibe el submit del formulario:
Código HTML:
Ver original
<input name="enter" type="submit" value="Enter" onclick="return checkCreateErrors()">
En todas las validaciones, si recibe "false", no hace nada y por tanto no se recarga la web. Pero en el caso de esta que utilizo AJAX (no sé si tendrá algo que ver), devuelva lo que devuelva siempre se ejecuta el submit.
Seguro que es una chorrada pero no lo veo. Un saludo.