iMasters Fóruns: Mascara e Validação de CPF+CNPJ+CEP+DATA+TELEFONE - iMasters Fóruns

Ir para o conteúdo

Curso de HTML5 - Teoria e Prática na digitalks

O curso tem como objetivo dar ao aluno uma visão geral de HTML 5, CSS 3 e JavaScript abordando os principais conceitos para a construção de websites e "webapps". Ao final do curso o aluno estará habilitado a construir sites dinâmicos e responsivos, e "webapps" para smartphones através do uso de tecnologias HTML5, CSS3 e JavaScript.

Faça sua inscrição agora. Membros da comunidade iMasters ganham um super desconto!


Bom uso da área


Atenção:
Este sub-fórum é destinado apenas para postagem de scripts prontos e testados para auxiliar os demais membros.
Não é permitido a abertura de tópicos com dúvidas. Para isso, use o Fórum de Javascript.
Página 1 de 1
  • Novo tópico
  • Fechado

Mascara e Validação de CPF+CNPJ+CEP+DATA+TELEFONE Código super simples de entender e utilizar, realmente você vai ficar

  • Grupo: Membros
  • Posts: 30
  • Cadastrado: 14 Mar 2007 - 13:16

#1   Postou 01 abril 2007 - 04:30

Para quem está cansado de procurar e sempre achar as coisas mais louca do mundo para validação de campo,
ta ai uma solução pratica e viável com JavaScript.

Validação de CPF+CNPJ+CEP+DATA+TELEFONE

OBS: CPF e CNPJ o valores são validados segundo as regras estabelecidas para tal fim.

Espero que seja de útil!

Inte+
Oliveira Junior


Index.html
<!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">
&lt;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>



Aqui vai o aquivo java script

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


-----------------------------------------------------------------------------------
Post Mesclado
-----------------------------------------------------------------------------------

segue abaixo o exemplo de como ficaria o codigo para limpar e colocar o focu quando for
invalido. ok!
//valida data
	   function ValidaData(data){
	exp = /\d{2}\/\d{2}\/\d{4}/
	if(!exp.test(data.value)){
		data.value = "";
		alert('Data Invalida!');
		data.select();		
	}
	   }


Abraço ate++

Este post foi editado por vagner.net: 06 dezembro 2007 - 07:43
Razão por editar: Substituição da TAG <div> pela TAG [code].



  • Grupo: Membros
  • Posts: 1
  • Cadastrado: 18 Jan 2008 - 06:39

#2 Postou 18 janeiro 2008 - 06:43

Achei muito legal... só tem um porém: "event" não funciona (me parece que no IE funciona, mas quem é que usa isso, né?).
Queria encontrar algo que resolvesse isso sem que tivesse que fazer mudanças muito bruscas no código que você passou...

[]'s


  • Grupo: Membros
  • Posts: 30
  • Cadastrado: 14 Mar 2007 - 13:16

#3 Postou 18 janeiro 2008 - 22:33

Ver postnan, em 18/01/2008 - 06:43, disse:

Achei muito legal... só tem um porém: "event" não funciona (me parece que no IE funciona, mas quem é que usa isso, né?).
Queria encontrar algo que resolvesse isso sem que tivesse que fazer mudanças muito bruscas no código que você passou...

[]'s



explique o que você quer que eu tento te ajudar . ok!


  • Grupo: Membros
  • Posts: 67
  • Cadastrado: 14 Set 2007 - 09:55

#4 Postou 07 fevereiro 2008 - 09:37

A máscara não está funcionando pra mim.. Estou usando o Firefox 2. Acho que foi isso que o colega acima comentou.


  • nknk
  • php, css, javascript
  • Grupo: Membros
  • Posts: 689
  • Cadastrado: 08 Dez 2006 - 03:41
  • Sexo:Masculino

#5 Postou 08 fevereiro 2008 - 01:28

talvez possa quebrar o galho, estava precisando de uma mascara para telefone e corrigi uma q encontrei na net, essa funciona no firefox:

<script>
function fone(){
if (document.frm.campo.value.length == 0){
document.frm.campo.value = "(" + document.frm.campo.value; }
if (document.frm.campo.value.length == 4){
document.frm.campo.value = document.frm.campo.value + ")"; }
if (document.frm.campo.value.length == 9){
document.frm.campo.value = document.frm.campo.value + "-";}
}
</script>
<form id="frm" name="frm" method="post" action="">
  <input type="text" name="campo" id="campo" onkeypress="fone()"/>
</form>



  • Grupo: Membros
  • Posts: 10
  • Cadastrado: 27 Abr 2006 - 16:08
  • Sexo:Masculino
  • Localização:Rio de Janeiro

#6 Postou 10 fevereiro 2008 - 07:08

Só acho que ficaria melhor assim, pois além de funcionar em qualquer browser, pula para o próximo campo ou botão se desejar, basta mudar o segundo parâmetro no onKeyPress:

<script language=javascript>
<!--
function fone(obj,prox) {
switch (obj.value.length) {
	case 1:
		obj.value = "(" + obj.value;
		break;
	case 3:
		obj.value = obj.value + ")";
		break;	
	case 8:
		obj.value = obj.value + "-";
		break;	
	case 13:
		prox.focus();
		break;
}
}
function formata_data(obj,prox) {
switch (obj.value.length) {
	case 2:
		obj.value = obj.value + "/";
		break;
	case 5:
		obj.value = obj.value + "/";
		break;
	case 9:
		prox.focus();
		break;
}
}
function Apenas_Numeros(caracter)
{
  var nTecla = 0;
  if (document.all) {
	  nTecla = caracter.keyCode;
  } else {
	  nTecla = caracter.which;
  }
  if ((nTecla> 47 && nTecla <58)
  || nTecla == 8 || nTecla == 127
  || nTecla == 0 || nTecla == 9  // 0 == Tab
  || nTecla == 13) { // 13 == Enter
	  return true;
  } else {
	  return false;
  }
}
function validaCPF(cpf) 
 {
   erro = new String;
 
 	if (cpf.value.length == 11)
 	{	
 			cpf.value = cpf.value.replace('.', '');
 			cpf.value = cpf.value.replace('.', '');
 			cpf.value = cpf.value.replace('-', '');
 
 			var nonNumbers = /\D/;
 	
 			if (nonNumbers.test(cpf.value)) 
 			{
 					erro = "A verificacao de CPF suporta apenas números!"; 
 			}
 			else
 			{
 					if (cpf.value == "00000000000" || 
 							cpf.value == "11111111111" || 
 							cpf.value == "22222222222" || 
 							cpf.value == "33333333333" || 
 							cpf.value == "44444444444" || 
 							cpf.value == "55555555555" || 
 							cpf.value == "66666666666" || 
 							cpf.value == "77777777777" || 
 							cpf.value == "88888888888" || 
 							cpf.value == "99999999999") {
 							
 							erro = "Número de CPF inválido!"
 					}
 	
 					var a = [];
 					var b = new Number;
 					var c = 11;
 
 					for (i=0; i<11; i++){
 							a[i] = cpf.value.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.value.charAt(9) != a[9]) || (cpf.value.charAt(10) != a[10])) {
 						erro = "Número de CPF inválido.";
						
 					}
 			}
 	}
 	else
 	{
 		if(cpf.value.length == 0)
 			return false
 		else
 			erro = "Número de CPF inválido.";
 	}
 	if (erro.length > 0) {
 			alert(erro);
 			cpf.focus();
 			return false;
 	} 	
 	return true;	
 }
 
 //envento onkeyup
 function maskCPF(CPF) {
 	var evt = window.event;
 	kcode=evt.keyCode;
 	if (kcode == 8) return;
 	if (CPF.value.length == 3) { CPF.value = CPF.value + '.'; }
 	if (CPF.value.length == 7) { CPF.value = CPF.value + '.'; }
 	if (CPF.value.length == 11) { CPF.value = CPF.value + '-'; }
 }
 
 // evento onBlur
 function formataCPF(CPF)
 {
 	with (CPF)
 	{
 		value = value.substr(0, 3) + '.' + 
 				value.substr(3, 3) + '.' + 
 				value.substr(6, 3) + '-' +
 				value.substr(9, 2);
 	}
 }
 function retiraFormatacao(CPF)
 {
 	with (CPF)
 	{
 		value = value.replace (".","");
 		value = value.replace (".","");
 		value = value.replace ("-","");
 		value = value.replace ("/","");
 	}
 }
//-->
</script>
Tel: <form id="form" name="form" method="post" action="?">
<input name="telefone" type="text" id="telefone" maxLength="13" size="13" onKeyPress="fone(this,document.form.data)">
Formato: (11)1111-1111<br>


Data: 
<input name="data" type="text" id="data" onKeyPress="formata_data(this,document.form.cpf);return Apenas_Numeros(event);" size="11" maxlength="11">
Formato: MM/DD/AAAA<br>
CPF: 
<input name="cpf" type="text" class="imput" id="cpf" size="12" maxlength="11" onKeyPress="return Apenas_Numeros(event);" onBlur="validaCPF(this);">
<br>
<input type="submit" name="enviar" value="Enviar">



  • Grupo: Aguardando Liberação
  • Posts: 146
  • Cadastrado: 31 Dez 2007 - 14:29
  • Sexo:Masculino
  • Localização:Curitiba PR

#7 Postou 03 abril 2008 - 22:40

teria como explicar para nós como funciona o esquema de pontos visgulas hifens, para que nós possamos fazer nossas proprias mascaras?
Obrigado se nao posso postar aqui me desculpe!


  • Grupo: Membros
  • Posts: 4
  • Cadastrado: 13 Mar 2008 - 20:18

#8 Postou 09 abril 2008 - 13:24

Sera que alguem consegue conscertar essa amscara para o FF?


  • Grupo: Membros
  • Posts: 37
  • Cadastrado: 28 Fev 2007 - 14:05

#9 Postou 09 maio 2008 - 11:21

Eu desenvolvi esta: http://forum.wmonlin...howtopic=196136


  • Grupo: Membros
  • Posts: 399
  • Cadastrado: 05 Dez 2006 - 07:51
  • Sexo:Masculino
  • Localização:Novo Hamburgo - RS
  • Interesses:PHP, JAVA, SQL, JAVASCRIPT, CSS, XHTML, WOW.

#10 Postou 12 maio 2008 - 08:17

Com um plugin da jQuery http://digitalbush.c...ed-input-plugin :

$(”#data”).mask(”99/99/9999″);
$(”#cep”).mask(”99999-999″);
$(”#cpf”).mask(”999.999.999-99″);
$(”#cnpj”).mask(”99.999.999/9999-99″);
$(”#telefone”).mask(”(99) 9999-9999″);

e por ai vai...


  • Grupo: Membros
  • Posts: 10
  • Cadastrado: 18 Jan 2005 - 12:10
  • Localização:Novo Hamburgo - RS

#11 Postou 16 maio 2008 - 17:24

Como eu faria para atribuir essas máscaras a um TextBox numa página ASP .NET?


  • Grupo: Membros
  • Posts: 34
  • Cadastrado: 25 Fev 2006 - 10:47

#12 Postou 15 julho 2008 - 11:42

Ver posthunternh, em 12/05/2008 - 08:17, disse:

Com um plugin da jQuery http://digitalbush.c...ed-input-plugin :

$(”#data”).mask(”99/99/9999″);
$(”#cep”).mask(”99999-999″);
$(”#cpf”).mask(”999.999.999-99″);
$(”#cnpj”).mask(”99.999.999/9999-99″);
$(”#telefone”).mask(”(99) 9999-9999″);

e por ai vai...


é a segunda vez que vejo falar nesse plugin mas não consigo fazer em funcionar. Tô usado assim:

Salvei o JS como JQuery.js

<script src="SpryAssets/jQuery.js" type="text/javascript"></script>

A função:

jQuery(function($){
$("#txtTelefone").mask("(99)9999-9999");
$("#txtTelefoneA").mask("(99)9999-9999");
});

Onde tô errando?


  • Grupo: Aguardando Liberação
  • Posts: 146
  • Cadastrado: 31 Dez 2007 - 14:29
  • Sexo:Masculino
  • Localização:Curitiba PR

#13 Postou 15 julho 2008 - 15:48

@Nelson Sousa, Você está chamando a biblioteca JQuery em sua página?


  • Grupo: Membros
  • Posts: 34
  • Cadastrado: 25 Fev 2006 - 10:47

#14 Postou 15 julho 2008 - 17:08

Ver postNeri Junior, em 15/07/2008 - 15:48, disse:

@Nelson Sousa, Você está chamando a biblioteca JQuery em sua página?


Não seria nessa linha?
<script src="SpryAssets/jQuery.js" type="text/javascript"></script>


  • Grupo: Membros
  • Posts: 5
  • Cadastrado: 22 Jun 2005 - 15:33
  • Sexo:Masculino

#15 Postou 05 outubro 2008 - 22:17

Nelson souza, tive a mesma duvida e demorei pra entender....voce precisa de 2 .js pra fazer rolar...
Tem que baixar os arquivos JavaScript do
jQuery -->http://www.jquery.com
e do Masked Input--->http://digitalbush.com/projects/masked-input-plugin

Dai você faz conforme exemplo abaixo...

http://www.revistaph...tigo.php?id=174

espero ter ajudado em tempo...agnaldo


Compartilhar este tópico:


Página 1 de 1
  • Novo tópico
  • Fechado

6 usuário(s) está(ão) lendo este tópico
0 membro(s), 6 visitante(s) e 0 membros anônimo(s)