1

ユーザーの生年月日を保持する入力フィールドを検証しようとしていますが、2 つのチェックを行う必要があります- 1.ユーザーが 18 歳であることを確認し、 2.年齢が 100 歳を超えていないことを確認します。

私のカスタム検証方法 -

$.validator.addMethod(
       "datediff",
       function(value, element, diff_years) {
          var curr_date = new Date().getFullYear();
          var element_date = Date.parse($(element).val()).getFullYear();
          return element_date >= curr_date - diff_years;
       }
);

そして、これがルールを追加する方法です。

var validator = $('form').validate({
     rules: {
        'dob': {datediff: 18}
     },
     messages: {
         dob: {datediff: 'You have to be 18 or more!'}
     }
});

ルールを 2 回再利用して、datediff両方のチェックを行うにはどうすればよいですか? 別のルールを追加しようとしましdatediffたが、うまくいきませんでした。

編集:また、2 つの異なるメッセージを表示する必要あります

4

3 に答える 3

3

2 つの一意のメッセージが必要な場合は、2 つの一意のルール/メソッドが必要になります。共通コードを 1 つの関数に入れ、カスタム メソッド内から呼び出すことができます。

このようなもの...

function datediff(value, diff_years) {
    var curr_date = new Date().getFullYear();
    var element_date = Date.parse(value.getFullYear();
    return element_date >= curr_date - diff_years;
}

$.validator.addMethod( "over18", function(value, element) {
    // your custom function below
    // var result = datediff(value, 18);
    // return true if age is greater than 18
    // return false and error message will display
}, "You must be over 18");

$.validator.addMethod( "under100", function(value, element) {
    // your custom function below
    // var result = datediff(value, 100);
    // return true if age is less than 100
    // return false and error message will display
}, "You must be under 100");

$('form').validate({
     rules: {
         dob: {
             over18: true,
             under100: true
         }
     }
});
于 2013-08-26T21:04:28.830 に答える
1

2 つの異なるメッセージを処理したい場合は、おそらく と を使用できますmaxmin

max : 要素が特定の最大値を要求するようにします。
min : 要素が特定の最小値を必要とするようにします。

ルール:

    rules: {
        dob: {
            min: 18,
            max: 100,
            required: true
        }
    }

表示されるメッセージ:

    messages: {
        dob: {
            required: "Please enter the age",
            min: "Enter the age above 18",
            max: "Age should be below 100"
        }
    }

JSFiddleでチェックアウト

于 2013-08-26T12:07:46.820 に答える