Méthode personnalisée jQuery Validator
-
06-07-2019 - |
Question
pourriez-vous jeter un coup d'œil à cette http://jsbin.com/osolo/ s'il vous plaît?
Si vous entrez une lettre dans Min Age plutôt qu'un nombre puis que vous cliquez sur soumettre, cela valide l'utilisation de validateur jQuery à l'aide d'une expression régulière dans une méthode de validation personnalisée. Cela fonctionne mais je cherche maintenant à la rendre un peu plus dynamique.
Dans la méthode de validation personnalisée, la ligne
var data = $(element).metadata();
saisit les métadonnées de l'élément en cours de validation, ce que je voudrais faire est d'utiliser le
data.validateOptions.regex
en tant que regex à tester avec (je ne vois pas cela comme un problème), ce que je peux voir comme un problème est que si le champ ne valide pas, plutôt que d'utiliser un message fourni lors de l'appel
jQuery.validator.addMethod(name, method, message)
je voudrais utiliser
data.validateOptions.message
En tant que message d'erreur de la méthode personnalisée, quelqu'un peut-il m'indiquer la bonne direction, s'il vous plaît?
Merci
OneShot
La solution
Je pense que la réponse d'Alex ne fonctionnera pas car les chaînes sont immuables dans JS.
C'est proche cependant. En commençant par le code d'Alex, si vous créez une fermeture contenant l'objet de données (ou simplement une chaîne de message) et une fonction renvoyant le message, vous pouvez passer la fonction en tant que troisième argument de l'appel addmethod. Comme si:
(function() {
var data = {};
var messager = function() {
return data.validateOptions.message;
};
jQuery.validator.addMethod("perorgproperty", function(value, element) {
debugger;
//alert('testing perorgproperty');
data = $(element).metadata();
return this.optional(element) || /^\d+$/i.test(value);
}, messager);
})();
Autres conseils
Qu'en est-il de la création d'une fermeture?
var data = {};
jQuery.validator.addMethod("perorgproperty", function(value, element) {
debugger;
//alert('testing perorgproperty');
data = $(element).metadata();
return this.optional(element) || /^\d+$/i.test(value);
}, data.validateOptions.message);
Tant que la fonction est évaluée avant le message, le message
ne serait-il pas simplement transmis par référence?