1

私は自分のページでjQueryValidateプラグインをBriteVerifyと組み合わせて使用​​しています(BriteVerifyは、既知の迷惑メールアドレスやその他のデータをチェックして、フォームでの偽の/スパムサインアップを防ぐサービスです)。

「有効な」フィールド(Validateプラグインによって決定される)は、BriteVerifyによってジャンクと見なされる可能性があることに注意してください。たとえばmickeymouse@aol.com、整形式のアドレスであるため検証に合格しますが、そのアカウントが実際には存在しないため、BriteVerifyは検証をブロックします。

だから、私がやりたいのはこれです:BriteVerifyからの応答が電子メールアドレスが良くないことを示している場合、プログラムでフィールドを「無効」としてマークします(検証プラグインがそれ自体を行う方法)。下記参照:

jQuery.briteVerify.email(jQuery("#email").val(), function(email){
    if (email.errors) {
        // Trigger jQuery Validate's invalid appearance/error message here
    } else {
        // Do nothing - email is valid
    }
}

それが理にかなっていることを願っています。これは可能ですか?

4

1 に答える 1

1

フィールドが無効であることを「トリガー」する方法を見つけることができませんでしたが、次のような同等のことを達成できました。

jQuery.briteVerify.email(jQuery("#email").val(), function(email){
    if (email.errors) {
        msg = email.errors[0][1];
        if (!($("#email").hasClass("error"))) {
            $("#email").addClass("error").after("<label class='bv error'>" + msg + ".</label>");
        }
    } else {
        form.submit();
    }
}

したがって、BriteVerify が入力された電子メールを気に入らず、入力フィールドにクラスがまだない場合error(「通常の」検証に合格したことを示します)、クラスを追加してエラー メッセージを動的に挿入します。同じクラスを使用すると、Validate がフィールドを無効とマークした場合と同じ外観になります。

label 要素に追加bvのクラスがあることに注意してください。これは、エラー メッセージが Validate からのものか、BriteVerify からのものかを判断するためのものです。したがって、一度に 2 つのエラー メッセージ (それぞれから 1 つ) が表示されるのを防ぐために、フィールドが「通常の」検証に合格した場合の両方で、BriteVerify エラー メッセージ (存在する場合) を削除します。

$("#register").validate({
    ...
    success: function(){
        $(".bv").remove();
    }
});

そして、キーが押されるたびに:

$("#email").keypress(function(){
    $(".bv").remove();
});
于 2012-09-18T14:25:43.997 に答える