Cómo verificar si un correo existe con jQuery keyup()
He configurado una función de retraso con jQuery keyup para verificar el correo electrónico ingresado en un campo de entrada.
Funciona correctamente después de probarlo con un alert('¡Tecla presionada!');
Pero quiero que muestre, por ejemplo, 'Sí, este correo está asociado a un usuario' O 'Lo sentimos, este correo no está en nuestra base de datos' sin enviar ninguna solicitud de página.
var delay = (function(){
var timer = 0;
return function(callback, ms){
clearTimeout (timer);
timer = setTimeout(callback, ms);
};
})();
$('input').keyup(function() {
delay(function(){
// verificar si el correo existe y mostrar resultado
// ¿Puedo usar PHP aquí?
// ¿Puede ayudar AJAX/JSON?
}, 500 );
});
Intenté verificarlo con PHP pero esto se ejecuta antes que el jQuery, que es donde almaceno mi variable de correo.
Después de algunas búsquedas en Google, parece que esto podría no ser posible. ¿Alguien puede confirmarlo o ofrecer una solución?
Gracias

Yo usaría una solicitud AJAX a un script PHP que realice la búsqueda, que podría verse algo así en el lado de jQuery después de que el documento esté listo:
// jquery
$('#email-input').live('change', function() {
//solicitud ajax
$.ajax({
url: "email_check.php",
data: {
'email' : $('#email-input').val()
},
dataType: 'json',
success: function(data) {
if(data.result) {
alert('¡El correo existe!');
}
else {
alert('¡El correo no existe!');
}
},
error: function(data){
//error
}
});
});
Con el ejemplo anterior, tu PHP tendría que devolver datos JSON una vez que haya realizado la comprobación del correo basándose en la dirección, por ejemplo, tu email_check.php contendría:
// obtener el correo pasado por AJAX
$email = $_GET['email'];
// realizar la comprobación
if ( email_exists($email) ) {
$response->result = true;
}
else {
$response->result = false;
}
// imprimir json
echo json_encode($response);
¡Espero que esto ayude!

Estaba llegando a la conclusión de que necesitaba usar AJAX, esta parece una buena solución. Voy a probarlo ahora mismo.

Lo siento, soy un poco novato con AJAX. ¿El código jQuery debería estar dentro de mi función keyup? Añadí un if para verificar si el email existe como una prueba simple, a mi email_check.php que devuelve true o false. Esto no está bien, ¿verdad? if ($email) {$response->result = true;} else {$response->result = false;}

Disculpa, ya he resuelto esto gracias a tu código. Olvidé que el url:
necesitaba tener en cuenta la URL del tema.

Rayos. Desafortunadamente, dentro de mi archivo email_check.php quería ejecutar if ( email_exists($email) )
y luego retornar el valor verdadero o falso. Está causando un error en el servidor y no logro hacerlo funcionar. Lo probé en la página de origen y funciona. ¿Por qué no dentro de la página PHP objetivo?

En respuesta a tus preguntas sobre dónde usarlo, simplemente úsalo dentro de document ready, no es necesario ponerlo en tu función keyup, esta función que he escrito hace exactamente eso (básicamente on change).
En cuanto al error del servidor que estás obteniendo en la página PHP, ¿puedes proporcionar un enlace? ¿Puedes mostrar el código dentro de la función email_exists?

Resultó que no funcionaba porque no estaba completamente vinculado a WP. Me aconsejaron usar wp_ajax y crear código en functions.php. http://wordpress.stackexchange.com/questions/69572/using-email-exists-wp-function-in-an-ajax-request
