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

È stato utile?

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?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top