6

私はこれに数時間取り組んできましたが、うまくいかないようです。同じ入力フィールドで、クライアント セクションに複数の電子メールが必要です。

現在、私は持っています(これは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 つ以上の電子メールを検証する機能を誰かに手伝ってもらえますか?

前もって感謝します。

(ルールとメッセージにマルチメールを追加するために編集)(以下のソリューションで編集)

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

1 に答える 1

12

コードにいくつかのセマンティック エラーがあり、予期しないことが起こっていると思います。

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

rules: {
    emailTest: {
        multiemail: true
    }
}

また、ハンドラーではmultiemails、識別子として持っていて、multiemail後でそれを参照しましたが、それがどれほどの影響を与えたかはわかりません。

完全な動作例は次のとおりです: http://jsfiddle.net/jbergler/7jXn7/2/

于 2013-07-29T23:02:45.170 に答える