2012-10-26 5 views
30

Bitte beachten Sie die Dokumentation:
https://jqueryvalidation.org/jQuery.validator.addMethod/Was macht this.optional (element) beim Hinzufügen einer jQuery-Validierungsmethode?

Ich frage mich, was this.optional(element) tut. Ich habe zwei Formen zum Testen erstellt:
Form1 und Form2 - eins mit this.optional(element) und das andere ohne es. Theoretisch gesprochen und nach ein paar Kommentare zu this answer von Andrew Whitaker:

alle this.optional tut, ist zu sagen „wenn das Feld optional ist, true zurück, wenn es leer ist“

und

Die Prüfung this.optional überprüft grundsätzlich, ob das Feld leer ist oder nicht, bevor geprüft wird, ob es die Regel erfüllt oder nicht.

Aber in Aktion sehe ich keinen Unterschied in wie Form1 und Form2 arbeiten. Bitte helfen Sie mir, den Unterschied in der Aktion zu verstehen.

+0

Form1 und Form2 sind nicht mehr sichtbar. Irgendwelche alternativen Links? –

+1

@accord_guy: Bearbeitete die Frage. – Mori

Antwort

37

OK ... in Ihren Beispielen ist das Feld in keiner Form leer. Entweder hat es einen Platzhalterwert oder einen Versuch einer E-Mail-Adresse. Der ganze Punkt von this.optional(element) ist, sofort true zurückzugeben, wenn das Element leer ist und es nicht erforderlich ist.

Also, wenn Sie diese beiden Methoden haben:

jQuery.validator.addMethod("BOB", function (value, element) { 
    return this.optional(element) || 
     element.value === 'BOB'; 
}, 'You did not enter BOB'); 

jQuery.validator.addMethod("mustbeBOB", function (value, element) { 
    return element.value === 'BOB'; 
}, 'You did not enter BOB'); 

eine Klasse von BOB required Hinzufügen wäre das gleiche wie eine Klasse von mustbeBOB eingeben. Vergleichen Sie das mit einer Klasse von BOB, die ein Leerzeichen oder "BOB" zulassen würde, im Vergleich zu einer Klasse von mustbeBOB, die nur die Validierung mit einem Wert von BOB bestehen, leer würde fehlschlagen. Macht das mehr Sinn?

+7

Hilfreiches Beispiel! Das bedeutet, dass die Verwendung von 'this.optional (element)' bedeutungslos ist, wenn das Feld benötigt wird oder einen Standardwert hat, richtig? – Mori

+0

Ja, ich stimme zu @RainLover – Ryley

+0

Danke, Ryley! :) – Mori

2

this.optional ist zur Verwendung in allgemeinen Validierungsmethoden gedacht, die mit erforderlichen oder optionalen Elementen verwendet werden können. Sie können alle eigenen Prüfungen überspringen, wenn das Feld nicht ausgefüllt ist. Wenn das Feld optional ist, wird die Methode sofort erfolgreich ausgeführt. Wenn dies erforderlich ist, gibt die Methode den Fehler sofort zurück.

Mit dieser Methode kann die Methode annehmen, dass der Wert nicht leer ist, was den Rest seiner Codierung vereinfachen kann.

Verwandte Themen