/ / Używanie zasady sprawdzania poprawności jQuery dwukrotnie dla pola - jquery, validation, jquery-validate

Przy użyciu jQuery dwukrotnie sprawdzaj regułę dla pola - jquery, validation, jquery-validate

Próbuję sprawdzić pole wejściowe, które zawiera datę urodzenia użytkownika i muszę to zrobić dwie kontrole - 1. Upewnij się, że użytkownik ma 18 lat i 2. Upewnij się, że jego wiek nie przekracza 100 lat.

Moja niestandardowa metoda sprawdzania poprawności -

$.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 oto jak dodaję regułę.

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

Jak mogę ponownie użyć datediff rządzić dwa razy, abym mógł wykonać obie kontrole? Próbowałem po prostu dołączyć kolejne datediff rządzić, ale to nie zadziałało.

Edytować: Muszę też pokazać 2 różne wiadomości - na przykład - 1. "Musisz mieć 18 lat lub więcej" dla pierwszego warunku, oraz "Nie możesz mieć więcej niż 100" na sekundę.

Odpowiedzi:

1 dla odpowiedzi № 1

Jeśli potrzebujesz dwóch unikatowych wiadomości, będziesz potrzebować dwóch unikalnych reguł / metod. Możesz umieścić wspólny kod w jednej funkcji i wywołać go w niestandardowej metodzie.

Coś takiego...

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 dla odpowiedzi nr 2

Jeśli chcesz obsłużyć 2 różne wiadomości, prawdopodobnie możesz ich użyć max i min

maks: Sprawia, że ​​element wymaga określonego maksimum.
min: Sprawia, że ​​element wymaga określonego minimum.

Reguły:

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

Wyświetlane wiadomości:

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

Sprawdź w JSFiddle


0 dla odpowiedzi № 3

Spróbuj użyć reguły zasięgu:

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

Źródło: http://jqueryvalidation.org/range-method