/ / Verwendung der jQuery-Validierungsregel für ein Feld zweimal - jquery, validation, jquery-validate

Verwenden Sie die jQuery-Validierungsregel zweimal für ein Feld - jquery, validation, jquery-validate

Ich versuche, ein Eingabefeld zu validieren, das das Geburtsdatum eines Benutzers enthält, und das muss ich tun zwei Schecks - 1. Stellen Sie sicher, dass der Benutzer 18 Jahre alt ist und 2. Stellen Sie sicher, dass sein Alter nicht über 100 ist.

Meine benutzerdefinierte Validierungsmethode -

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

Und hier ist, wie ich die Regel hinzufüge.

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

Wie verwende ich das? datediff Regel zweimal, damit ich beide Prüfungen machen kann? Ich habe versucht, nur einen anderen anzuhängen datediff Regel, aber das hat nicht funktioniert.

Bearbeiten: Ich muss auch 2 verschiedene Nachrichten zeigen - zum Beispiel - 1. "Du musst 18 oder mehr sein" für die erste Bedingung, und "Sie können nicht mehr als 100 sein" für die Sekunde.

Antworten:

1 für die Antwort № 1

Wenn Sie zwei eindeutige Nachrichten benötigen, benötigen Sie zwei eindeutige Regeln / Methoden. Sie können Ihren gemeinsamen Code in eine einzige Funktion einfügen und sie innerhalb der benutzerdefinierten Methode aufrufen.

Etwas wie das...

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 für die Antwort № 2

Wenn Sie zwei verschiedene Nachrichten verarbeiten möchten, dann können Sie wahrscheinlich verwenden max und min

max: Lässt das Element ein bestimmtes Maximum erfordern.
Mindest: Lässt das Element ein bestimmtes Minimum erfordern.

Regeln:

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

Angezeigte Nachrichten:

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

Check-in JSFidel


0 für die Antwort № 3

Verwenden Sie die Bereichsregel:

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

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