2011-12-06 65 views
8

Tôi có một trường để người dùng viết địa chỉ e-mail của họ. Đây là tùy chọn, vì vậy trước hết tôi cần kiểm tra xem có gì đã được nhập vào trường hay không không có gì, nhưng nếu một cái gì đó đã được nhập hơn kiểm tra xem nó là một e-mail.Kiểm tra xem e-mail đã được nhập đúng chưa

Ngay bây giờ tôi đang ở thời điểm này

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; 
} 

Tôi thậm chí không chắc chắn nếu điều đó là đúng, nhưng tôi nghĩ rằng đó là. Ngay bây giờ tôi cần trợ giúp với những khoảng trống trong mã, tôi đã đánh dấu chúng là [CODE HERE]. Bất cứ ai có thể đề nghị một giải pháp xin vui lòng.

+0

bản sao có thể có của [Xác thực địa chỉ email trong Javascript?] (http://stackoverflow.com/questions/46155/validate-email-address-in-javascript) –

+0

Bản sao có thể có của [Xác thực địa chỉ email trong JavaScript?] (Http://stackoverflow.co m/question/46155/validate-email-address-in-javascript) – Flummox

Trả lời

17

Bạn có thể sử dụng jQuery validate plugin cho việc này, nhưng nếu bạn chỉ muốn kiểm tra tính hợp lệ của địa chỉ email trong một trường, đó là một chút quá mức cần thiết.

Thay vào đó, cụm từ thông dụng trong hàm bên dưới sẽ đảm bảo định dạng của địa chỉ email là chính xác, nếu bạn nhập giá trị.

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

Nó sử dụng cụm từ thông dụng (http://en.wikipedia.org/wiki/Regular_expression) để kiểm tra định dạng của chuỗi. Nó trả về một boolean cho biết chuỗi có khớp với định dạng chuẩn RFC cho một địa chỉ email (http://www.ietf.org/rfc/rfc5322.txt) hay không. –

+0

yep thử nghiệm nó, hoạt động hoàn hảo cảm ơn bạn))) chỉ cần chờ đợi để chấp nhận câu trả lời))) – Ilja

+0

Không phải lo lắng, vui lòng giúp đỡ. –

2

Bạn có thể sử dụng cụm từ thông dụng để xác thực địa chỉ email bằng 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); 
} 

Tuy nhiên, điều này chỉ xác thực rằng đó là chuỗi định dạng địa chỉ email hợp lệ. [email protected] sẽ là hợp lệ, ngay cả khi không có ai thực sự có địa chỉ email đó.

Hãy xem this question.

1

Tôi muốn giới thiệu xác nhận cả ở phía khách hàng và ở phía máy chủ, bạn chỉ có thể sử dụng mã này:

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

nhưng quan trọng, sử dụng máy chủ xác nhận phía và phương pháp, như gửi bấm-link-mail, để xác minh địa chỉ email của khách hàng hoặc số ngẫu nhiên gửi thư, v.v.

Các vấn đề liên quan