1

複数の入力があるフォームがあります。そのうちの 2 つは「国」と「郵便番号」です。国が「NL」でない限り、「郵便番号」が必要であり、適切な郵便番号形式である必要があります。この場合、郵便番号は不要で、任意の形式にすることができます。私はこれを試しました。しかし、どういうわけか、国が NL 以外に設定されている場合、入力は不要になりました (ok) が、郵便番号のフォーマットは引き続きチェックされ、エラー メッセージが返されます。 (コードは読みやすくするために短縮されています)

function setupValidator() {
    $.validator.addMethod("postcodeFormat",
        function (value, element) {
            console.log(element, value)
            return this.optional(element) || /[1-9][0-9]{3} ?[a-zA-Z]{2}/.test(value);
        },
        "vul een geldig postcode in"
    );

    $("#donatieform").validate({
        rules :{
           postcode :{required:function(){return $("#country").val() === 'NL';}, postcodeFormat:function(element){return $("#country").val() === 'NL';} },
        },

        focusInvalid  :false
    });
}

誰かがそれを修正する理由と方法を知っていますか?

4

2 に答える 2

0

次のようにjQueryで検証クラスを削除できます

  if($('#CountryId').val() !="")
    $(selector).rules('add', 'your rule name');
   else
    $(selector).rules('remove', 'your rule name)'
于 2013-03-08T14:51:33.883 に答える
0

必要以上に複雑にしてしまいました。カスタムメソッドを少し変更して国を確認し、国を構成する部分を削除しましたoptionalpostcodeFormat次に、内でルールを宣言する方法を単純化しました.validate()

dependsまた、ルールのオプションを使用してrequired、「国」に何かが入力されている場合にのみ「郵便番号」が必要になるようにしました。

動作デモ: http://jsfiddle.net/ptUft/2

$(document).ready(function () {

    $.validator.addMethod("postcodeFormat", function (value, element) {
        if ($('#country').val() == 'NL') {
            return  (/[1-9][0-9]{3} ?[a-zA-Z]{2}/).test(value);
        } else {
            return true;
        }
    }, "vul een geldig postcode in");

    $("#donatieform").validate({
        rules: {
            postcode: {
                required: {
                    depends: function (element) {
                        return $('#country').is(':filled')
                    }
                },
                postcodeFormat: true
            }
        },
        focusInvalid: false
    });

});

編集

OPとコメントを交換した後、彼が望むように機能するように編集したと思います.

ただし、彼の OP のコードはずっと同じように機能していました。

http://jsfiddle.net/mDdCn/

于 2013-03-08T17:29:39.067 に答える