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 [/sourcecode] E agora na hora de validar seu formulário, você já pode utilizar o método adicionado: [sourcecode language="javascript"] $("form#cadastro").validate({ rules: { 'CampoCPF': { required: true, verificaCPF: true } }, messages: { CampoCPF: { required: "Digite seu cpf" verificaCPF: "CPF inválido" } }, }); [/sourcecode] <h4> Verificação de Data (formato dd/mm/aaaa) </h4> 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 [/sourcecode] <h4> Verificação de Data e Hora (formato dd/mm/aaaa hh:mm) </h4> 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