2013-07-29 1 views
6

Я работаю над этим в течение нескольких часов и не могу заставить его работать. Мне нужно больше одного адреса электронной почты в разделе наших клиентов в том же поле ввода.2+ (несколько) электронных писем в jQuery Подтвержденный ввод текста

Сейчас у меня есть (который прекрасно работает для одного адреса электронной почты):

<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"> 

Я нашел это, который должен получить многократную валидатор работы:

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

Но я не могу заставить его работать правильно. Может кто-то, пожалуйста, помогите мне получить возможность проверять 2 или более электронных писем в одном текстовом поле?

Заранее спасибо.

(отредактирован, чтобы добавить multiemail в правилах и сообщениях) (отредактированные с раствором ниже) 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

Как это не работает правильно? Вы получаете сообщение об ошибке, не вызывает ли функцию? я подозреваю ошибку, поскольку у вас есть 'jQuery.validator.messages.multiemails' как параметр в функции addMethod, но я не вижу определения для этого в вашем коде, так что вы, вероятно, получаете неопределенную переменную ошибку. –

+0

В консоли не появляется ошибка, и проверка поля электронной почты работает как обычно, так как в этом случае только 1 письмо будет считаться действительным. –

ответ

11

Я думаю, что есть некоторые семантические ошибки в коде, которые приводят к некоторым вещам, случающиеся вас не ожидая.

Мне удалось заставить ваш пользовательский обработчик работать, сопоставляя его с полем по имени, а не по типу - я не уверен, что переопределение работает в плагине.

rules: { 
    emailTest: { 
     multiemail: true 
    } 
} 

Кроме того, в обработчике был multiemails в качестве идентификатора и назвал его multiemail позже, не знаю, сколько из влияния, которое было.

Вот полный рабочий пример: http://jsfiddle.net/jbergler/7jXn7/2/

+1

Большое спасибо! Как только у меня появился рабочий пример, я понял, что происходит не так. Ваша очень непосредственная помощь очень ценится. Будет обновлено выше с помощью решения. –