Metodo personalizzato jQuery Validator
-
06-07-2019 - |
Domanda
potresti dare un'occhiata a questo http://jsbin.com/osolo/ per favore?
Se inserisci una lettera in Età minima anziché un numero, quindi premi invia questo si convalida utilizzando il validatore jquery usando un'espressione regolare in un metodo di convalida personalizzato, funziona ma ora sto cercando di renderlo un po 'più dinamico.
Nel metodo di convalida personalizzato la riga
var data = $(element).metadata();
prende i metadati dall'elemento in fase di validazione, quello che vorrei fare è usare
data.validateOptions.regex
come regex con cui testare (non riesco a vedere che questo è un problema), ciò che vedo essere un problema è che se il campo non si convalida, piuttosto che usare un messaggio che viene fornito quando si chiama
jQuery.validator.addMethod(name, method, message)
mi piacerebbe usare
data.validateOptions.message
come messaggio di errore all'interno del metodo personalizzato, qualcuno può indicarmi la giusta direzione per favore?
Grazie
OneShot
Soluzione
Penso che la risposta di Alex non funzionerà perché le stringhe sono immutabili in JS.
È vicino però. A partire dal codice di Alex, se si crea una chiusura contenente l'oggetto dati (o solo una stringa di messaggio) e anche una funzione che restituisce il messaggio, è possibile passare la funzione come terzo argomento alla chiamata del metodo aggiuntivo. In questo modo:
(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);
})();
Altri suggerimenti
Che ne dici di creare una chiusura?
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);
Fintanto che la funzione viene valutata prima del messaggio, il messaggio
non viene semplicemente passato per riferimento?