/ / jQueryを使用してフィールドの2回の検証ルール - jquery、validation、jquery-validate

フィールドのjQuery検証ルールを2回使用する - jquery、validation、jquery-validate

私はユーザーの生年月日を保持する入力フィールドを検証しようとしています。 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!"}
}
});

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

編集: また、2つの異なるメッセージを表示する必要があります。 "あなたは18歳以上でなければなりません" 最初の条件では、 "あなたは100を超えることはできません" 第二のために。

回答:

回答№1は1

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

回答№2の場合は1

2つの異なるメッセージを処理したい場合は、おそらく 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


回答№3の場合は0

範囲ルールを使用してみてください:

rules: {
field: {
required: true,
range: [18, 100]
}
}

ソース: http://jqueryvalidation.org/range-method