0

jQuery Validation プラグインを使用してフォームを検証しています。ここで、サイトの各フォームを検証したいと考えています。これは機能します:

$('form').validate({
    <?php echo $translation["validation_lang"];?>
    errorPlacement: function (error, element) {
        $(element).tooltipster('update', $(error).text());
        $(element).tooltipster('show');
    },
    success: function (label, element) {
        $(element).tooltipster('hide');
    }
});

Tooltipsterを使用して、対応するフィールドの横にエラーを表示しています。繰り返しますが、これは機能します。そこPHPにある -string は、オプションで言語パックをロードするためのものです。

現在、サイトに追加のルールを必要とする他のフォームがあります。たとえば、登録フォームでは、ユーザー名の可用性、ユーザー名の有効性 (長さ、文字数など) などを確認する必要があります。

$('#registerForm').validate({
    rules: {
        username: {
            minlength: 3,
            maxlength: 50
        },
        password1:  {
            minlength: 5
        },
        password2:  {
            minlength: 5,
            equalTo: "#password1"
        },
        email: {
            remote:{
                url: "getContent.php",
                type: "post",
                data: {
                    type: "checkMail"
                }
            }
        },
        username:   {
            remote: {
                url: "getContent.php",
                type: "post",
                data:   {
                    type: "checkUser"
                }
            }
        }
    },
    messages:   {
        email:  {
            remote: "<?php echo $translation["already_registered"][0];?>"
        },
        username:   {
            remote: "<?php echo $translation["already_registered"][1];?>"
        }
    }
});

これら 2 つのコード スニペットを同じページに配置しても機能しません。上記のコードの本体 (したがって、rulesand messages) がイニシャル内$('form').validate({にある場合、それ自体$('#registerForm').validate({ではなく、機能します。すべてのフォームの「一般的な」ルールを維持しながら、特定のルールを特定のフォームに追加する方法がどこにも見つからないようです。

つまり、一般的なフォームルールを維持しながら、特定の ID を持つ特定のフォームにルール/メッセージ/submitHandlers を追加するにはどうすればよいですか?

4

1 に答える 1

1

setDefaults メソッドを使用して、一般的な検証を定義できます: http://jqueryvalidation.org/jQuery.validator.setDefaults/

例:

$.validator.setDefaults({
    errorPlacement: function (error, element) {
    $(element).tooltipster('update', $(error).text());
    $(element).tooltipster('show');
},
    success: function (label, element) {
    $(element).tooltipster('hide');
}
});

jsFiddle - すべてのフォームでエラー要素を「em」に設定します。

于 2013-09-14T13:17:51.890 に答える