Pregunta

¿podría echar un vistazo a este http://jsbin.com/osolo/ por favor?

Si ingresa una letra en Edad mínima en lugar de un número y luego presiona enviar, esto valida con jquery validator usando una expresión regular en un método de validación personalizado, esto funciona pero ahora estoy buscando hacerlo un poco más dinámico.

En el método de validación personalizado, la línea

var data = $(element).metadata(); 

toma metadatos del elemento que se valida, lo que me gustaría hacer es usar el

data.validateOptions.regex

como la expresión regular para probar (no puedo ver que esto sea un problema), lo que puedo ver como un problema es que si el campo no se valida, en lugar de usar un mensaje que se proporciona al llamar a

jQuery.validator.addMethod(name, method, message)

me gustaría usar

data.validateOptions.message

como mensaje de error dentro del método personalizado, ¿alguien puede señalarme en la dirección correcta, por favor?

Gracias

OneShot

¿Fue útil?

Solución

Creo que la respuesta de Alex no funcionará porque las cadenas son inmutables en JS.

Sin embargo, está cerca. Comenzando con el código de Alex, si crea un cierre que contiene el objeto de datos (o solo una cadena de mensaje) y también una función que devuelve el mensaje, puede pasar la función como el tercer argumento a la llamada addmethod. Me gusta así:

(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);
})();

Otros consejos

¿Qué pasa con la creación de un cierre?

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

Mientras la función se evalúe antes del mensaje, ¿no se pasaría el mensaje por referencia?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top