Pergunta

você pode dar uma olhada neste http://jsbin.com/osolo/ por favor?

Se você digitar uma letra em Min Idade em vez de um número, em seguida, clique em enviar Isso valida usando validador jquery usando uma expressão regular em um método de validação personalizada, isso funciona, mas eu estou olhando agora para torná-lo um pouco mais dinâmico.

No método de validação personalizada a linha

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

agarra metadados do elemento que está sendo validado, o que eu gostaria de fazer é usar o

data.validateOptions.regex

como o regex para teste com (i não pode ver este ser um problema), o que eu posso ver sendo um problema é que se o campo não valida, ao invés de usar uma mensagem que é fornecido ao chamar

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

i gostaria de usar

data.validateOptions.message

como a mensagem de erro a partir do método personalizado, alguém pode me apontar na direção certa, por favor?

Graças

OneShot

Foi útil?

Solução

Eu acho que a resposta de Alex não vai funcionar porque strings são imutáveis ??em JS.

É perto embora. Começando com código de Alex, se você criar um fecho contendo o objeto de dados (ou apenas uma cadeia de mensagem) e também uma função que retorna a mensagem, você pode passar a função como o terceiro argumento para a chamada addMethod. Como assim:

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

Outras dicas

O que sobre a criação de um fechamento?

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

Enquanto a função é avaliada antes da mensagem, não seria o message apenas ser passado por referência?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top