/ / Použitie jQuery dvakrát overiť pravidlo pre pole - jquery, validation, jquery-validate

Použitie pravidla jQuery dvakrát overte pre pole - jquery, validation, jquery-validate

Snažím sa overenie vstupného poľa, v ktorom sa nachádza dátum narodenia, a musím to urobiť dve kontroly - 1. Uistite sa, že používateľ má 18 rokov a 2. Uistite sa, že jeho vek nie je viac ako 100 rokov.

Vlastná metóda overovania -

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

A tu je to, ako pridám pravidlo.

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

Ako znova použijem datediff pravidlo dvakrát, aby som mohol urobiť obe kontroly? Snažil som sa jednoducho pridať ďalšie datediff pravidlo, ale to nefungovalo.

edit: Musím tiež zobraziť dve odlišné správy - napríklad - 1. "Musíte byť 18 alebo viac" za prvú podmienku a "Nemôžete byť viac ako 100" za druhé.

odpovede:

1 pre odpoveď č. 1

Ak potrebujete dve unikátne správy, budete potrebovať dve jedinečné pravidlá / metódy. Môžete dať svoj spoločný kód do jednej funkcie a zavolať z vlastnej metódy.

Niečo také...

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

1 pre odpoveď č. 2

Ak chcete spracovať 2 rôzne správy, pravdepodobne môžete použiť max a min

max: Prvok vyžaduje prvé maximum.
min: Prvok vyžaduje prvé minimum.

pravidlá:

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

Zobrazené správy:

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

Odhláste sa JSFiddle


0 pre odpoveď č. 3

Skúste použiť pravidlo rozsahu:

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

zdroj: http://jqueryvalidation.org/range-method