web-dev-qa-db-fra.com

Que fait this.optional (élément) lors de l'ajout d'une méthode de validation jQuery?

Veuillez consulter la documentation:
https://jqueryvalidation.org/jQuery.validator.addMethod/

Je me demande ce que fait this.optional(element). J'ai créé deux formulaires pour tester:
Form1 et Form2 - un avec this.optional(element) et l'autre sans. Théoriquement parlant et selon quelques commentaires sur cette réponse par Andrew Whitaker:

tout this.optional fait, c'est dire "si le champ est optionnel, retourne vrai s'il est vide"

et

Le this.optional check consiste essentiellement à vérifier si le champ est vide ou non avant d'évaluer s'il répond ou non à la règle.

Mais en action, je ne vois aucune différence dans la façon dont Form1 et Form2 fonctionnent. Veuillez m'aider à comprendre la différence en action.

36
Mori

OK ... donc dans vos exemples, le champ n'est jamais vide dans les deux formes. Soit il a une valeur d'espace réservé, soit une tentative d'adresse e-mail. L'intérêt de this.optional(element) est de renvoyer immédiatement true si l'élément est vide ET qu'il n'est pas requis.

Donc, si vous aviez ces deux méthodes:

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

Ajout d'une classe de BOB required reviendrait à entrer une classe de mustbeBOB. Comparez cela à une classe de BOB qui permettrait un blanc ou "BOB", vs une classe de mustbeBOB qui ne passera que la validation avec une valeur de BOB, vide échouerait. Est-ce que ça fait plus de sens?

47
Ryley

this.optional est destiné à être utilisé dans les méthodes de validation à usage général, qui peuvent être utilisées avec des éléments obligatoires ou facultatifs. Il leur permet de sauter toutes leurs propres vérifications si le champ n'est pas rempli. Si le champ est facultatif, la méthode retourne avec succès immédiatement; si cela est requis, la méthode renvoie immédiatement l'échec.

En l'utilisant, la méthode peut supposer que la valeur n'est pas vide, ce qui peut simplifier le reste de son codage.

4
Barmar