/ / Използване на jQuery за валидиране на правилото два пъти за поле - jquery, validation, jquery-validate

Използването на jQuery потвърждава правилото два пъти за поле - jquery, validation, jquery-validate

Опитвам се да потвърдя поле за въвеждане, което съдържа дата на раждане на потребителя и трябва да го направя две проверки - 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 кажете два пъти, за да мога да направя и двете проверки? Опитах се просто да добавя друг datediff правило, но това не работи.

Редактиране: Също така трябва да покажа 2 отделни съобщения - например - 1. "Трябва да сте на 18 или повече" за първото условие и "Вие не може да бъде повече от 100" за второто.

Отговори:

1 за отговор № 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
}
}
});

1 за отговор № 2

Ако искате да се справите с 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


0 за отговор № 3

Опитайте да използвате Правилото за обхват:

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

Източник: http://jqueryvalidation.org/range-method