Aunque estoy trabajando con joomla 1.5, el problema es con jquery así que pienso que debería poner aquí mi problema, pero digo lo de joomla por si tiene su importancia.
Pongo el código y ahora os explico:
Código:
Os digo lo que no está saliendo, cuando entra en la función validarEmail, primero devuelve true y luego hace la función post, es decir, va a la funcion JQuery.post, la hace y antes de dar el resultado, pasa hasta el final y devuelve el return true.jQuery(document).ready(function(jQuery) { jQuery('#miform').submit(function(){ result = true; //tengo muchas comprobaciones de este tipo, telefono, address,etc.. var telephone = jQuery('#telephone').val(); if(telephone!=''){ result = false; //mensajito } //llego a la comprobación del email, AQUI VIENE EL PROBLEMA, ANTES TODO BIEN var email = jQuery('#email').val(); if(email!=''){ result = validarEmail(JQuery('#email')); //mensajito } return result; }); function validarEmail(email){ var value = email.val(); jQuery.post('index.php?option=com_micomponente&format=raw', {email:value}, function(data){ if(data=='error'){ return false; } } }); return true; }
¿Cómo se esto ? Pues poniendo alert('xxx') y parando el submit con un return false al final.
La pregunta es porque en la función validarEmail no espera a que el post devuelva el resultado (que por cierto lo devuelve bien, si el email ya esta en la base de datos) y luego sigue adelante.
Un saludo.