Na verdade não é bem uma coleção com dezenas de métodos, a intenção do post é simplesmente mostrar que é possível e fácil criar métodos para o plugin.
Para quem não sabe o que é o validate, recomendo saber do que se trata, você pode ganhar muito tempo no desenvolvimento utilizando o plugin, principalmente para desenvolver interface de back end, com diversas validações. Tem um post do Alexandre Magno antigo, porém muito bom, explicando o que é o plugin, o que faz, como utilizá-lo e um exemplo bem simples de um formulário validado pelo plugin.
Quando se faz o download do validate, ele vêm com uma coleção de médotos, mas alguns que nós precisamos, como verificação de data ( formato dd/mm/aaaa ) e verificação de cpf, não tem.
Alguns métodos que serão postados aqui não fui eu quem fez, queria dar os créditos a quem fez, porém não sei quem foi. Mas… vamos ao ponto, veja como é facil adicionar novos métodos.
Verificação de CPF
O código abaixo adiciona um Método que chamamos de “verificaCPF” :
jQuery.validator.addMethod("verificaCPF", function(value, element) {
value = value.replace('.','');
value = value.replace('.','');
cpf = value.replace('-','');
while(cpf.length < 11) cpf = "0"+ cpf;
var expReg = /^0+$|^1+$|^2+$|^3+$|^4+$|^5+$|^6+$|^7+$|^8+$|^9+$/;
var a = [];
var b = new Number;
var c = 11;
for (i=0; i<11; i++){
a[i] = cpf.charAt(i);
if (i < 9) b += (a[i] * --c);
}
if ((x = b % 11) < 2) { a[9] = 0 } else { a[9] = 11-x }
b = 0;
c = 11;
for (y=0; y<10; y++) b += (a[y] * c--);
if ((x = b % 11) < 2) { a[10] = 0; } else { a[10] = 11-x; }
if ((cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10]) || cpf.match(expReg)) return false;
return true;
}, "Informe um CPF válido."); // Mensagem padrão
E agora na hora de validar seu formulário, você já pode utilizar o método adicionado:
$("form#cadastro").validate({
rules: {
'CampoCPF': {
required: true,
verificaCPF: true
}
},
messages: {
CampoCPF: {
required: "Digite seu cpf"
verificaCPF: "CPF inválido"
}
},
});
Verificação de Data (formato dd/mm/aaaa)
Agora o método se chama dateBR e a mensagem padrão (caso não seja colocada outra na hora de usar o validate, será “Informe uma data válida”.
jQuery.validator.addMethod("dateBR", function(value, element) {
//contando chars
if(value.length!=10) return false;
// verificando data
var data = value;
var dia = data.substr(0,2);
var barra1 = data.substr(2,1);
var mes = data.substr(3,2);
var barra2 = data.substr(5,1);
var ano = data.substr(6,4);
if(data.length!=10||barra1!="/"||barra2!="/"||isNaN(dia)||isNaN(mes)||isNaN(ano)||dia>31||mes>12)return false;
if((mes==4||mes==6||mes==9||mes==11)&&dia==31)return false;
if(mes==2 && (dia>29||(dia==29&&ano%4!=0)))return false;
if(ano < 1900)return false;
return true;
}, "Informe uma data válida"); // Mensagem padrão
Verificação de Data e Hora (formato dd/mm/aaaa hh:mm)
jQuery.validator.addMethod("dateTimeBR", function(value, element) {
//contando chars
if(value.length!=16) return false;
// dividindo data e hora
if(value.substr(10,1)!=' ') return false; // verificando se há espaço
var arrOpcoes = value.split(' ');
if(arrOpcoes.length!=2) return false; // verificando a divisão de data e hora
// verificando data
var data = arrOpcoes[0];
var dia = data.substr(0,2);
var barra1 = data.substr(2,1);
var mes = data.substr(3,2);
var barra2 = data.substr(5,1);
var ano = data.substr(6,4);
if(data.length!=10||barra1!="/"||barra2!="/"||isNaN(dia)||isNaN(mes)||isNaN(ano)||dia>31||mes>12)return false;
if ((mes==4||mes==6||mes==9||mes==11)&&dia==31)return false;
if (mes==2 && (dia>29||(dia==29&&ano%4!=0)))return false;
// verificando hora
var horario = arrOpcoes[1];
var hora = horario.substr(0,2);
var doispontos = horario.substr(2,1);
var minuto = horario.substr(3,2);
if(horario.length!=5||isNaN(hora)||isNaN(minuto)||hora>23||minuto>59||doispontos!=":")return false;
return true;
}, "Informe uma data e uma hora válida");
Se alguém tiver (ou fizer) o método de CNPJ (ou algum outro legal que não tem aqui) me manda por e-mail ou posta aqui nos comentários.
[]s