2012-04-27 8 views
15

プラグイン:jQueryの検証、私は次のjQueryの検証プラグインを持っている複数の電子メールアドレスに

<script type="text/javascript" src="/requires/js/jquery.min.js"></script> 
<script type="text/javascript" src="/requires/js/jquery.validate.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#form").validate({ 
      rules: { 
       name: { 
        required: true, 
        minlength: 2 
       }, 
       email: { 
        required: true, 
        email: true 
       }, 
       emails: { 
        required: true, 
        email: true 
       } 
      }, 
      messages: { 
       name: { 
        required: "Je bent vergeten om je naam in te vullen.", 
        minlength: "Je bent vergeten om je naam in te vullen." 
       }, 
       email: { 
        required: "Je bent vergeten om je emailadres in te vullen.", 
        email: "Het opgegeven emailadres is niet geldig." 
       }, 
       emails: { 
        required: "Je bent vergeten om het emailadres van je vriend(in) in te vullen.", 
        email: "Je moet een geldig e-mailadres van je vriend(in) invullen." 
       } 
      } 
     }); 
    }); 
</script> 

<form id="form" method="post"> 
Jouw naam: <input type="text" name="name"><br /> 
Jouw e-mailadres: <input type="text" name="email"><br /> 
Het e-mailadres van je vriend(in): <input type="text" name="emails"><br /> 
<input type="submit" value="Verstuur"> 
</form> 

値電子メールによって人々が[email protected]のような複数のemailaddressesを与えることができなければなりません。[email protected]またはテスト@テスト。 com、test @ test2.com

このようにすると、検証プラグインにエラーが表示されます。この問題を解決するには、次のエラーが表示されます。

どうすればこの問題を解決できますか?

答えて

42

はここでカスタムメイドの機能はaddMethodの助けを借りて追加されます:

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

    jQuery.validator.messages.email 
); 

はここmultiemailカスタムメソッドを使用する方法を示しているjsFiddleです:

http://jsfiddle.net/leniel/xFphm/7/

+0

ありがとうございますが、これを '$("#form ")に入れてもいいですか?validate({});'? – Arthur

+1

このJavaScriptをページに含めてからemails: { required: true,email: true }がある場合は、emails: { required: true,multiemail: true }に変更してください。 –

+0

ありがとうございました!しかし、電子メールフィールドが空の場合は、たとえば空のフィールドが表示されます。フィールドが正しくない場合、このemailadresは無効です。フィールドが正しくないとエラーが表示されます... – Arthur

0

カスタム機能を作りましたメッセージが入っている

<script>  
jQuery.validator.addMethod("custom_method_one", function (value, element) { 
    if (this.optional(element)) { 
    return true; 
    } 

    var emails = value.split(','), 
    valid = true; 

    for (var i = 0, limit = emails.length; i < limit; i++) { 
    value = emails[i]; 
    valid = valid && jQuery.validator.methods.email.call(this, value, element); 
    } 

    return valid; 
    }, "Invalid email format: please use a comma to separate multiple email addresses."); 

$('#form').validate({ 
"emails": { required:true,custom_method_one: true } 
}) 
</script> 

<form method="post" id="form" name="form" action=""> 
<input type="text" name="emails" id="emails" placeholder="(eg:[email protected],[email protected],....)"/> 

</form> 
関連する問題