2013-07-29 9 views
6

私はこれを数時間前から取り組んできました。 同じ入力フィールドにあるクライアントセクションに複数のメールが必要です。jQueryの2+(複数の)電子メール検証済みのテキスト入力

今私は(1つの電子メールのための素晴らしい作品がある)があります。

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

をしかし、私はできませんそれが適切に機能するようにしてください。誰かが私が1つのテキストフィールドで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

エラーはコンソールには表示されず、電子メールフィールドの検証は通常のように動作します。 –

答えて

11

私はあなたを起こっていくつかのことにつながるのコードでいくつかのセマンティック・エラーがないていると思います期待している。

カスタムハンドラは、タイプではなく名前でフィールドにマッピングすることで、カスタムハンドラを動作させることができました。プラグインでオーバーライドが機能しているかどうかわかりません。

rules: { 
    emailTest: { 
     multiemail: true 
    } 
} 

はまた、ハンドラでは、あなたは識別子としてmultiemailsを持っていたと後でmultiemailとして呼ばれ、どのくらい持っていた影響がわかりません。

完全な動作例を次に示します。http://jsfiddle.net/jbergler/7jXn7/2/

+1

ありがとうございます!いったん実例があれば、何がうまくいかないのか分かりました。あなたの非常に直接的な助けは大いに感謝します。上記でソリューションで更新されます。 –

関連する問題