2013-07-29 12 views
6

Pracuję nad tym od kilku godzin i nie mogę sprawić, żeby działało. Potrzebuję więcej niż jednego e-maila w sekcji naszych klientów w tym samym polu wejściowym.2 + (wiele) e-maili w jQuery Sprawdzone wprowadzanie tekstu

Teraz mam (które działa świetnie na jeden adres e-mail):

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

znalazłem ten, który ma dostać wielokrotnej obróbce validator:

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

Ale nie mogę spraw, aby działał poprawnie. Czy ktoś może mi pomóc w sprawdzeniu 2 lub więcej e-maili w jednym polu tekstowym?

Z góry dziękuję.

(edytowane aby dodać multiemail w zasadach i komunikaty) (edytowanych za pomocą roztworu poniżej) 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

Jak to działa nieprawidłowo? Czy pojawi się komunikat o błędzie, czy funkcja nie zostanie wywołana? Podejrzewam błąd, ponieważ masz 'jQuery.validator.messages.multemyails' jako parametr w funkcji addMethod, ale nie widzę w nim definicji, więc prawdopodobnie otrzymujesz niezdefiniowany błąd zmiennej. –

+0

W konsoli nie pojawiają się żadne błędy, a sprawdzanie poprawności pola wiadomości e-mail działa tak samo, jak w normalnym trybie, ponieważ tylko 1 e-mail jest uznawany za poprawny. –

Odpowiedz

11

Myślę, że istnieją pewne semantyczne błędy w kodzie, które prowadzą do pewnych rzeczy dzieje nie jesteś przy nadziei.

Udało mi się przekonwertować twój niestandardowy program obsługi, mapując go na pole według nazwy, a nie według typu - nie jestem pewien, czy nadpisanie działa w wtyczce.

rules: { 
    emailTest: { 
     multiemail: true 
    } 
} 

Również w uchwycie, miałeś multiemails jako identyfikator i zwrócił się do niego jako multiemail później, nie wiem, jak wielki wpływ, który miał.

Oto pełny przykład: http://jsfiddle.net/jbergler/7jXn7/2/

+1

Dziękuję bardzo! Gdy miałem już działający przykład, mogłem zobaczyć, co się stało. Twoja bardzo bezpośrednia pomoc jest bardzo doceniana. Zaktualizuje powyższe rozwiązanie. –

Powiązane problemy