Excelente código para Máscara e Validação de CNPJ, CPF, CEP Data e Telefone
(OBS 17/02/2014 – Outro código muito bom para validação: Criando máscaras em formulários com Jquery)
Procurando um código para Máscara e Validação de CNPJ encontrei um excelente código que me permite criar outras máscaras (Máscara de RG por exemplo).
Encontrei o código no site Fórum Imasters.
Segue abaixo o código do form:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Formatacao de campos</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <script language="JavaScript" type="text/javascript" src="MascaraValidacao.js"></script> </head> <body> <form name="form1"> <br><br>CEP: <input type="text" name="cep" onKeyPress="MascaraCep(form1.cep);" maxlength="10" onBlur="ValidaCep(form1.cep)"> <br><br>DATA: <input type="text" name="data" onKeyPress="MascaraData(form1.data);" maxlength="10" onBlur= "ValidaDataform1.data);"> <br><br>Telefone: <input type="text" name="tel" onKeyPress="MascaraTelefone(form1.tel);" maxlength="14" onBlur="ValidaTelefone(form1.tel);"> <br><br>CPF: <input type="text" name="cpf" onBlur="ValidarCPF(form1.cpf);" onKeyPress="MascaraCPF(form1.cpf);" maxlength="14"> <br><br>CNPJ: <input type="text" name="cnpj" onKeyPress="MascaraCNPJ(form1.cnpj);" maxlength="18" onBlur="ValidarCNPJ(form1.cnpj);"> </form> </body> </html>
Segue o JavaScript MascaraValidacao.js
// JavaScript Document //adiciona mascara de cnpj function MascaraCNPJ(cnpj){ if(mascaraInteiro(cnpj)==false){ event.returnValue = false; } return formataCampo(cnpj, '00.000.000/0000-00', event); } //adiciona mascara de cep function MascaraCep(cep){ if(mascaraInteiro(cep)==false){ event.returnValue = false; } return formataCampo(cep, '00.000-000', event); } //adiciona mascara de data function MascaraData(data){ if(mascaraInteiro(data)==false){ event.returnValue = false; } return formataCampo(data, '00/00/0000', event); } //adiciona mascara ao telefone function MascaraTelefone(tel){ if(mascaraInteiro(tel)==false){ event.returnValue = false; } return formataCampo(tel, '(00) 0000-0000', event); } //adiciona mascara ao CPF function MascaraCPF(cpf){ if(mascaraInteiro(cpf)==false){ event.returnValue = false; } return formataCampo(cpf, '000.000.000-00', event); } //valida telefone function ValidaTelefone(tel){ exp = /\(\d{2}\)\ \d{4}\-\d{4}/ if(!exp.test(tel.value)) alert('Numero de Telefone Invalido!'); } //valida CEP function ValidaCep(cep){ exp = /\d{2}\.\d{3}\-\d{3}/ if(!exp.test(cep.value)) alert('Numero de Cep Invalido!'); } //valida data function ValidaData(data){ exp = /\d{2}\/\d{2}\/\d{4}/ if(!exp.test(data.value)) alert('Data Invalida!'); } //valida o CPF digitado function ValidarCPF(Objcpf){ var cpf = Objcpf.value; exp = /\.|\-/g cpf = cpf.toString().replace( exp, "" ); var digitoDigitado = eval(cpf.charAt(9)+cpf.charAt(10)); var soma1=0, soma2=0; var vlr =11; for(i=0;i<9;i++){ soma1+=eval(cpf.charAt(i)*(vlr-1)); soma2+=eval(cpf.charAt(i)*vlr); vlr--; } soma1 = (((soma1*10)%11)==10 ? 0:((soma1*10)%11)); soma2=(((soma2+(2*soma1))*10)%11); var digitoGerado=(soma1*10)+soma2; if(digitoGerado!=digitoDigitado) alert('CPF Invalido!'); } //valida numero inteiro com mascara function mascaraInteiro(){ if (event.keyCode < 48 || event.keyCode > 57){ event.returnValue = false; return false; } return true; } //valida o CNPJ digitado function ValidarCNPJ(ObjCnpj){ var cnpj = ObjCnpj.value; var valida = new Array(6,5,4,3,2,9,8,7,6,5,4,3,2); var dig1= new Number; var dig2= new Number; exp = /\.|\-|\//g cnpj = cnpj.toString().replace( exp, "" ); var digito = new Number(eval(cnpj.charAt(12)+cnpj.charAt(13))); for(i = 0; i<valida.length; i++){ dig1 += (i>0? (cnpj.charAt(i-1)*valida[i]):0); dig2 += cnpj.charAt(i)*valida[i]; } dig1 = (((dig1%11)<2)? 0:(11-(dig1%11))); dig2 = (((dig2%11)<2)? 0:(11-(dig2%11))); if(((dig1*10)+dig2) != digito) alert('CNPJ Invalido!'); } //formata de forma generica os campos function formataCampo(campo, Mascara, evento) { var boleanoMascara; var Digitato = evento.keyCode; exp = /\-|\.|\/|\(|\)| /g campoSoNumeros = campo.value.toString().replace( exp, "" ); var posicaoCampo = 0; var NovoValorCampo=""; var TamanhoMascara = campoSoNumeros.length;; if (Digitato != 8) { // backspace for(i=0; i<= TamanhoMascara; i++) { boleanoMascara = ((Mascara.charAt(i) == "-") || (Mascara.charAt(i) == ".") || (Mascara.charAt(i) == "/")) boleanoMascara = boleanoMascara || ((Mascara.charAt(i) == "(") || (Mascara.charAt(i) == ")") || (Mascara.charAt(i) == " ")) if (boleanoMascara) { NovoValorCampo += Mascara.charAt(i); TamanhoMascara++; }else { NovoValorCampo += campoSoNumeros.charAt(posicaoCampo); posicaoCampo++; } } campo.value = NovoValorCampo; return true; }else { return true; } }
Ainda, nesse código, inseri uma Máscara para RG, muito fácil:
//adiciona mascara ao RG function MascaraRG(rg){ if((rg)==false){ event.returnValue = false; } return formataCampo(rg, '00.000.000-0', event); }
No form fica da seguinte forma:
<label for="rg">RG*</label><br /> <input name="rg" type="text" id="rg" size="30" maxlength="12" onKeyPress="MascaraRG(form1.rg);" />
Olá! Sou Fabio, criador do blog FabioBmed, um espaço onde compartilho minha paixão por marketing digital, tecnologia, empreendedorismo e, claro, os aprendizados do meu dia a dia. Aqui você encontrará um mix de conteúdos profissionais e pessoais, sempre com insights práticos, dicas úteis e histórias reais.
Com mais de 15 anos de experiência no mercado digital e fundador da FBDigital, minha missão é inspirar e ajudar pessoas e empresas a construírem uma base sólida no universo online. Seja por meio de estratégias de marketing, ferramentas tecnológicas ou reflexões sobre o cotidiano, meu objetivo é transformar desafios em oportunidades.
Além dos conteúdos voltados para negócios e tecnologia, também compartilho momentos do meu dia a dia, ideias que aprendo pelo caminho e até curiosidades que podem fazer a diferença na sua vida. Aqui, cada post reflete minha busca por conhecimento e minha vontade de conectar pessoas e histórias.
Conecte-se comigo e acompanhe tudo sobre marketing, tendências digitais, aprendizados pessoais e muito mais. Juntos, vamos explorar o melhor do mundo digital e da vida cotidiana!
- Site: www.fabiobmed.com.br
- WhatsApp: WhatsApp
- E-mail:
Publicação Criada em: julho 16, 2012
Sem atualizações registradas.
Bom dia Fabio. A pouco tempo, peguei o codigo do validador do CPF para testar e recebi muitas reclamacoes que o cpf estava certo. Decidi validar e parece que realmente seu algoritmo não está 100%. Estou enviando essa mensagem so par que voce possa corrigir e não (prejudicar) algum programador. Para voce ter certeza, estou enviando 2 cpfs validos que o seu algoritmo esta apresentando como invalido: 10116988380 e 10119995290 Espero ter ajudado. FAvor confirmar o recebimento dessa mensagem
Realmente testei em um dos formulário que utilizam o mesmo validador em um site que programei, e esses CPF deram como incorretos,
Porém, ao consultar os CPF na receita, consta que os CPFs não são válidos, veja:
http://fabiobmed.com.br/wp-content/uploads/2012/10/cpf-10119995290.gif
http://fabiobmed.com.br/wp-content/uploads/2012/10/cpf-10116988380.gif
Amigo,
Realmente não está validando o CPF. Inseri o meu e está dando inválido…
Olá boa Noite.. Coloco um CEP válido e acusa inválido.
Bom dia Jan,
Esse código foi substituído por outro que estou usando atualmente que é baseado em jQuery.
Oi Fábio
Parabéns pela função, mas a do CPF está com um problema sim. Tenho um CPF que não posso colocar em público aqui mas que é valido na receita e na função aqui foi dito como invalido dei alerta no digitoGerado!=digitoDigitado e ela dava 40 != 30
A máscara do RG não aceita texto.
Há números de RG que tem ‘X’, por exemplo.
Abraços!
Acho que ficaria um pouco melhor:
“99.999.999-*”
Muito bom. Obrigado!
Legal gostei muito do arquivo
porem por ser meio ou totalmente leigo
tenho uma pergunta
como faço no caso para incorporar ele ao WHMCS ?
muito bom o exemplo !
obrigado !
Boa Tarde Brother, muito bom seu código, o melhor que eu já vi até hoje. Porém ele diz que meu CPF é inválido, apenas o meu rsrsrsrsrsrsrsrsrs, mas funciona perfeitamente.
Gente, está funcionando normal, mas você terá que validar com caracteres.
Exemplo:
CPF: 000.000.000-00
CNPJ: 00.000.000/0000-00
Olá.
Não sei se já testou, mas as máscaras funcionam somente no PC. Se você testar em um celular ou smartphone as máscaras não funcionam… você sabe o que pode ser? estou apanhando com isso.
Fabio
Menos é mais…, parabéns pelo código, se fosse possível gostaria de uma orientação de como formatar uma Mascara e validar o campo para caracteres maiúsculos com seu código.
Mais uma vez parabéns, muito bom!
Queria saber como se faz um menu igual ou parecido com esse do site.
Entra no https://www.w3schools.com, lá vc vai encontrar o código com o passo a passo.
No http://getbootstrap.com.br/components/#navbar também.
Espero ter ajudado. Abraço
Olá pessoal.
Não sei se alguém já testou, mas as máscaras funcionam somente no PC. Se você testar em um celular ou smartphone as máscaras não funcionam… alguém sabe o que pode ser? estou apanhando com isso.
provavelmente o charcode
Obrigado esse site foi muito útil para o meu trabalho no TCC
Fábio, muito obrigada! Ajudou d+++++
Muito legal o código, me ajudou bastante. Obrigado!