2011-12-06 9 views
8

Tengo un campo para los usuarios a escribir su dirección de correo electrónico. Es opcional, así que tengo que comprobar primero si se ha introducido algo en el campo, si se ha introducido nada, entonces hago nada, pero si se ingresó algo, verifique si se trata de un correo electrónico.Comprobar si se ha introducido de correo electrónico correcta

En este momento estoy en este punto

var email = $("input#sc_email").val(); 
if (email == "") {     
    // If e-mail field is empty do nothing 
} else {       
    // If something was entered 
    // [CODE HERE] Check if valid e-mail was entered, if not show error message 
    $("label#email_error").show(); //error message 
    $("input#sc_email").focus(); //focus on email field 
    return false; 
} 

Ni siquiera estoy seguro de si eso es correcto, pero yo creo que es. Ahora mismo necesito ayuda con huecos en el código, los marqué como [CODE HERE]. ¿Alguien podría sugerir una solución por favor?

+0

posible duplicado de [¿Validar la dirección de correo electrónico en Javascript?] (http://stackoverflow.com/questions/46155/validate-email-address-in-javascript) –

+0

¿Posible duplicado de [Validar dirección de correo electrónico en JavaScript?] (Http://stackoverflow.co m/preguntas/46155/validar-email-address-en-javascript) – Flummox

Respuesta

17

Puede usar el jQuery validate plugin para esto, pero si solo quiere verificar la validez de una dirección de correo electrónico en un campo, eso es un poco exagerado.

En cambio, la expresión regular en la función a continuación se asegurará de que el formato de la dirección de correo electrónico es correcta, se debería haber introducido un valor.

var email = $("input#sc_email").val(); 

if (email !== "") { // If something was entered 
    if (!isValidEmailAddress(email)) { 
     $("label#email_error").show(); //error message 
     $("input#sc_email").focus(); //focus on email field 
     return false; 
    } 
} 

function isValidEmailAddress(emailAddress) { 
    var pattern = new RegExp(/^(("[\w-+\s]+")|([\w-+]+(?:\.[\w-+]+)*)|("[\w-+\s]+")([\w-+]+(?:\.[\w-+]+)*))(@((?:[\w-+]+\.)*\w[\w-+]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][\d]\.|1[\d]{2}\.|[\d]{1,2}\.))((25[0-5]|2[0-4][\d]|1[\d]{2}|[\d]{1,2})\.){2}(25[0-5]|2[0-4][\d]|1[\d]{2}|[\d]{1,2})\]?$)/i); 
    return pattern.test(emailAddress); 
}; 
+0

Se utiliza una expresión regular (http://en.wikipedia.org/wiki/Regular_expression) para comprobar el formato de la cadena. Devuelve un valor booleano que indica si la cadena coincide con el formato estándar de RFC para una dirección de correo electrónico (http://www.ietf.org/rfc/rfc5322.txt). –

+0

sí lo probó, funciona perfectamente gracias))) sólo tiene que esperar a aceptar la respuesta))) – Ilja

+0

No se preocupe, encantados de ayudarle. –

2

Puede usar expresiones regulares para validar la dirección de correo electrónico en JavaScript.

function validateEmail(email) { 
    var re = /^(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\ 
".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA 
-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 
    return re.test(email); 
} 

Esto, sin embargo, solo validará que se trata de una cadena con formato de dirección de correo electrónico válida. [email protected] sería válida , aunque en realidad nadie tiene esa dirección de correo electrónico.

Tenga una mirada en this question.

1

recomendaría la validación tanto en el lado del cliente y del lado del servidor, simplemente podría utilizar este código:

alert(/\[email protected]\S+\.\S+/.test('[email protected]@asdd.com')); 
alert(/\[email protected]\S+\.\S+/.test('[email protected]')); 

pero lo más importante, la validación del lado del servidor uso y metodología, como el envío de click-enlace de un correo electrónico, para verificar la dirección de correo electrónico de su cliente o el número aleatorio de envío de correos, etc.

Cuestiones relacionadas