Hola:
El problema es que validarCorreo() no devuelve nada. Fíjate que validarCorreo() hace una petición ajax, indicando que cuando llegue la respuesta se llame a success() y termina sin devolver nada.
Cuando más adelante llegue la respuesta ajax, se llamara a success() y esta será la función que devuelva true o false y eso no llegará al submit de ninguna forma.
Tendrías que hacer la petición ajax síncrona, es decir, que espere por la respuesta, poniendo algo así
Código Javascript
:
Ver original$.ajax({
type: "post", //Petición por POST
async: false,
...
de esta forma el código de validarCorreo() quedará "bloqueado" hasta que llegue la respuesta. Tu codigo en success() puede rellenar una variable con true o false según sea o no valido el correo y validarCorreo() hacer después de la llamada a ajax un return de esa variable.
Se bueno.