2013-07-29 23 views
6

Tôi đã làm việc này trong vài giờ và dường như không hoạt động. Tôi cần nhiều hơn một email trong phần khách hàng của chúng tôi, trong cùng một trường nhập.2+ (nhiều) email trong jQuery Nhập văn bản được xác thực

Ngay bây giờ tôi có (mà hoạt động tuyệt vời cho một email):

<script language="JavaScript"> 
$(document).ready(function(){ 
    $("form#editclient").validate({ 
      rules: { 
      Contact: { 
       required: true 
      }, 
      Clientname: { 
       required: true 
      }, 
      ClientLogin: { 
       required: true 
      }, 
      ClientPassword: { 
       required: true 
      }, 
      email: { 
       required: true, 
       multiemail: true 
      } 
     }, 
     messages: { 
      Contact: { 
       required: "Please enter your Contact Nmae." 
      }, 
      Clientname: { 
       required: "Please enter your Client Name" 
      }, 
      ClientLogin: { 
       required: "Please enter a login." 
      }, 
      ClientPassword: { 
       required: "Please enter a password" 
      }, 
      email: { 
       required: "Please enter an Email Address", 
       multiemail: "You must enter a valid email, or comma separate multiple" 
      } 
     } 
}); 
}); 
</script> 
    <input type="Text" id="email" name="Email" value="#Trim(Email)#" maxlength="60" class="inputText430 email required"> 

Tôi đã thấy điều này được cho là để có được xác nhận nhiều lao động:

jQuery.validator.addMethod(
"multiemails", 

function (value, element) { 
    if (this.optional(element)) // return true on optional element 
    return true; 
    var email = value.split(/[;,]+/); // split element by , and ; 
    valid = true; 
    for (var i in email) { 
     value = email[i]; 
     valid = valid && jQuery.validator.methods.email.call(this, $.trim(value), element); 
    } 
    return valid; 
}, 

jQuery.validator.messages.multiemail); 

Nhưng tôi không thể làm cho nó hoạt động đúng. Ai đó có thể giúp tôi có khả năng xác nhận 2 hoặc nhiều email trong một trường văn bản không?

Xin cảm ơn trước.

(chỉnh sửa để thêm multiemail trong các quy tắc và thông điệp) (chỉnh sửa với giải pháp dưới đây) SOLUTION

<form> 
    <input id='emailTest' name='emailTest' /> 
    <input type='submit' /> 
</form> 
    <script type="text/javascript"> 
    jQuery.validator.addMethod(
    "multiemail", 
    function (value, element) { 
     var email = value.split(/[;,]+/); // split element by , and ; 
     valid = true; 
     for (var i in email) { 
      value = email[i]; 
      valid = valid && jQuery.validator.methods.email.call(this, $.trim(value), element); 
     } 
     return valid; 
    }, 
    jQuery.validator.messages.multiemail 
); 

$("form").validate({ 
    debug: true, 
    rules: { 
      emailTest: { 
       multiemail: true 
      } 
     }, 
    messages: { 
      emailTest: { 
       multiemail: "You must enter a valid email, or comma separate multiple" 
      } 
     }, 
    submitHandler: function(form) { 
      return false; 
     } 
}); 
+0

Làm cách nào nó hoạt động không chính xác? Bạn có nhận được thông báo lỗi không, chức năng này có được gọi không? tôi nghi ngờ một lỗi như bạn có 'jQuery.validator.messages.multiemails' như là một paramater trong hàm addMethod nhưng tôi không thấy một định nghĩa cho nó trong mã của bạn, vì vậy bạn có thể nhận được một lỗi biến không xác định. –

+0

Không có lỗi nào xuất hiện trong bảng điều khiển và việc xác thực trường email hoạt động như bình thường, vì sẽ chỉ nhận ra 1 email là hợp lệ. –

Trả lời

11

Tôi nghĩ rằng có một số lỗi ngữ nghĩa trong mã đó dẫn đến một số những điều xảy ra bạn không mong đợi.

Tôi đã quản lý để trình xử lý tùy chỉnh của bạn hoạt động bằng cách ánh xạ nó tới một trường theo tên chứ không phải theo loại - Tôi không chắc chắn ghi đè hoạt động trong plugin.

rules: { 
    emailTest: { 
     multiemail: true 
    } 
} 

Cũng trong xử lý, bạn có multiemails như nhận diện và gọi nó là multiemail sau này, không chắc chắn có bao nhiêu tác động mà có.

Dưới đây là ví dụ làm việc đầy đủ: http://jsfiddle.net/jbergler/7jXn7/2/

+1

Cảm ơn bạn rất nhiều! Một khi tôi đã có ví dụ làm việc, tôi có thể thấy những gì đã xảy ra. Sự giúp đỡ rất trực tiếp của bạn được đánh giá cao. Sẽ cập nhật ở trên với giải pháp. –

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