método personalizado jQuery Validator
-
06-07-2019 - |
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
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?