Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

hugoamaral

CPF e CNPJ no mesmo input

Recommended Posts

Mascara para CPF ou CNPJ no mesmo campo.Mascara para cpf e cnpj no mesmo campo!Tive a necessidade de pesquisar clientes pelo cpf/cnpj, então fiz este script que já formataa mascara para os dois casos no mesmo campo.aproveitei e economizei um campo no form de cadastro pois faço o cadastro dos dois dados nosmesmos campos:Vamos ao que interessa:Aqui eu crio a função cpfcnpj(), que será chamada no evento onkeyup="cpfcnpj(this)" do campo.inputt

function cpfcnpj(){//testo o tamanho do campo e quando atingir três caracteres coloco o ponto.if(document.a.b.value.length == 3){//para exemplo dei nome para o form de a e pro campo de b, o que pode ser mudado.document.a.b.value = document.a.b.value + '.';return false;}//agora testo ao sétimo digito que é onde vai o segundo ponto na mascara para o cpf.if(document.a.b.value.length == 7){document.a.b.value = document.a.b.value + '.';return false;}//e final mente o traço do digito verificadorif(document.a.b.value.length == 11){document.a.b.value = document.a.b.value + '-';return false;}//agora é que fico sabendo se o campo é um cnpj, se tiver 15 caracteres pego todos eles pra dentrode variáveis, sei que da pra fazer com um array mas assim fica fácil da galera entender.if(document.a.b.value.length == 15){//aqui uso charAt(0) que me retorna um caracter especifico, assim posso pegar apenas os númerosdo cpf e não os pontos e o traço.p0=document.a.b.value.charAt(0);p1=document.a.b.value.charAt(1);p2=document.a.b.value.charAt(2);p3=document.a.b.value.charAt(4);p4=document.a.b.value.charAt(5);p5=document.a.b.value.charAt(6);p6=document.a.b.value.charAt(8);p7=document.a.b.value.charAt(9);p8=document.a.b.value.charAt(10);p9=document.a.b.value.charAt(12);p10=document.a.b.value.charAt(13);p11=document.a.b.value.charAt(14);limpo o campo pra depois colocar o cnpj.document.a.b.value = '';//e faço uma concatenação das variáveisdocument.a.b.value = p0 + p1 + '.' + p2 + p3 + p4 + '.' + p5 + p6 + p7 + '/' + p8 + p9 + p10 + p11 + '-';return false;

E no imput você coloca no onkeyup="cpfcnpj(this)"É isso aí sei que o código e bem simples e se alguém tem colaboração agradeço desde já.até a próxima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok o codigo que coloquei acima funciona pra menha necessidade.

 

exemplo:

 

quando digito um CPF que tem 11 digitos, o script coloca a mascara de CPF, se eu continuar a digitar,

 

o script formata o campo pra CNPJ :

 

Testem ai!

 

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt" lang="pt"><head><title>  </title><script LANGUAGE="JavaScript"><!--function cpfcnpj(){	if(document.a.b.value.length == 3){		document.a.b.value = document.a.b.value + '.';		return false;	}	if(document.a.b.value.length == 7){		document.a.b.value = document.a.b.value + '.';		return false;	}	if(document.a.b.value.length == 11){		document.a.b.value = document.a.b.value + '-';		return false;	}	if(document.a.b.value.length == 15){		p0=document.a.b.value.charAt(0);		p1=document.a.b.value.charAt(1);		p2=document.a.b.value.charAt(2);		p3=document.a.b.value.charAt(4);		p4=document.a.b.value.charAt(5);		p5=document.a.b.value.charAt(6);		p6=document.a.b.value.charAt(8);		p7=document.a.b.value.charAt(9);		p8=document.a.b.value.charAt(10);		p9=document.a.b.value.charAt(12);		p10=document.a.b.value.charAt(13);		p11=document.a.b.value.charAt(14);		document.a.b.value = '';		document.a.b.value = p0 + p1 + '.' + p2 + p3 + p4 + '.' + p5 + p6 + p7 + '/' + p8 + p9 + p10 + p11 + '-';		p0='';		p1='';		p2='';		p3='';		p4='';		p5='';		p6='';		p7='';		p8='';		p9='';		p10='';		p11='';		return false;	}}//--></SCRIPT></head><body><FORM name="a"><INPUT TYPE="text" NAME="b" onkeyup="cpfcnpj()"></FORM></body></html>

 

 

A qui funcionou!

Compartilhar este post


Link para o post
Compartilhar em outros sites

É tem que ser melhorado!Tem que acietar apenas numeros.E estou fazendo o seguinte, quando quando completar os 14 digitos do CPF ele valida e se for un cpf valido passa pro proximo campo nao permitindo que o usuario digite mais nada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

para q soh seja inserido numeros o script eh esse

 

<script language="JavaScript">function Verifica(event){var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;var caract = new RegExp(/^[0-9]+$/i);var caract = caract.test(String.fromCharCode(keyCode));if(!caract){//alert("Caracter inválido: " +String.fromCharCode(keyCode));keyCode=0;return false;}}</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eis a melhor formatação e validação de CPF e CNPJ (CGC) no mesmo input:

 

<script LANGUAGE="JavaScript">
<!--
  //Formata a digitação de CPF e CGC
function mask_cpfcgc(formulario,campo,tammax,teclapres) {

	var tecla = teclapres.keyCode;
	if ( (teclapres.shiftKey && tecla != 9) || teclapres.ctrlKey || teclapres.altKey ) {
		return false;
	}

	//48 a 57 são os números do teclado alfabético (1 a 0)
	//96 a 105 são os números do teclado numérico (0 a 9)
	//8 é a tecla de BACKSPACE
	//46 é a tecla DELETE
	//9 é a tecla de TAB
	//39 e 37 são as teclas para direita e para esquerda para retirar a seleção do campo
	if ((tecla < 48 || tecla > 57) && (tecla < 96 || tecla > 105) && tecla != 8 && tecla != 9 && tecla != 46 && tecla != 37 && tecla != 39 ) {
		return false;
	}

	vr = document.forms(formulario).item(campo.name).value;
	tam_vr = vr.length;
	vr = vr.replace( "/", "" );
	vr = vr.replace( "/", "" );
	vr = vr.replace( "-", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	tam = vr.length;

	if (tam < tammax && tecla != 8) {
		tam = vr.length+1;
	}

	if (tecla == 8 ) {
		tam = tam - 1;
	}
	else {
		if ( tecla != 9 && tecla != 37 && tecla != 39 ) {
			if ( tam_vr >= tammax ) {
				return false;
			}
		}
	}
}

function form_cpfcgc(formulario,campo,tammax,teclapres) {

	var tecla = teclapres.keyCode;

	if ((tecla < 48 || tecla > 57) && (tecla < 96 || tecla > 105) && tecla != 46 && tecla != 8) {
		return false;
	}

	vr = campo.value;
	vr = vr.replace( "/", "" );
	vr = vr.replace( "/", "" );
	vr = vr.replace( "-", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	tam = vr.length;

	if ( tam <= 2 ) {
		document.forms(formulario).item(campo.name).value = vr;
	}
	if ( (tam > 2) && (tam <= 5) ) {
		document.forms(formulario).item(campo.name).value = vr.substr( 0, tam - 2 ) + '-' + vr.substr( tam - 2, tam );
	}
	if ( (tam >= 6) && (tam <= 8) ) {
		document.forms(formulario).item(campo.name).value = vr.substr( 0, tam - 5 ) + '.' + vr.substr( tam - 5, 3 ) + '-' + vr.substr( tam - 2, tam );
	}
	if ( (tam >= 9) && (tam <= 11) ) {
		document.forms(formulario).item(campo.name).value = vr.substr( 0, tam - 8 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + '-' + vr.substr( tam - 2, tam );
	}
	if ( (tam == 12) ) {
		document.forms(formulario).item(campo.name).value = vr.substr( tam - 12, 3 ) + '.' + vr.substr( tam - 9, 3 ) + '/' + vr.substr( tam - 6, 4 ) + '-' + vr.substr( tam - 2, tam );
	}
	if ( (tam > 12) && (tam <= 14) ) {
		document.forms(formulario).item(campo.name).value = vr.substr( 0, tam - 12 ) + '.' + vr.substr( tam - 12, 3 ) + '.' + vr.substr( tam - 9, 3 ) + '/' + vr.substr( tam - 6, 4 ) + '-' + vr.substr( tam - 2, tam );
	}
}

//Verifica se CPF ou CGC e encaminha para a devida função de teste
function consiste_cpfcgc(Param) {
	tmp = Param;
	if (tmp.length == 11) {
		x = verifica_cpf(tmp);
		if (!x) {
			return false;
		}
	}
	else {
		if (tmp.length == 14) {
			cgc_aux = tmp.substring(0,2) + tmp.substring(2,5) + tmp.substring(5,8) + tmp.substring(8,12) + tmp.substring(12,14);
			x = verifica_cgc(cgc_aux);
			if (!x) {
				return false;
			}
		}
		else {
			return false;
		}
	}
	return true;
}

//Verifica se CPF ou CGC e encaminha para a devida função, no caso do cpf/cgc estar digitado sem mascara
function consiste_cpfcgc_sem_mascara(Param) {
	tmp = Param;
	if (tmp.length <= 11) {
		x = verifica_cpf(tmp);
		if (!x) {
			return false;
		}
	}
	else {
		x = verifica_cgc(tmp);
		if (!x) {
			return false;
		}
	}
	return true;
}

//Verifica se o número de CPF informado é válido
function verifica_cpf(sequencia) {
	if ( Procura_Str(1,sequencia,'00000000000,11111111111,22222222222,33333333333,44444444444,55555555555,6666
6666666,77777777777,88888888888,99999999999,00000000191,19100000000') > 0 ) {
		return false;
	}
	seq = sequencia;
	soma = 0;
	multiplicador = 2;
	for (f = seq.length - 3;f >= 0;f--) {
		soma += seq.substring(f,f + 1) * multiplicador;
		multiplicador++;
	}
	resto = soma % 11;
	if (resto == 1 || resto == 0) {
		digito = 0;
	}
	else {
		digito = 11 - resto;
	}
	if (digito != seq.substring(seq.length - 2,seq.length - 1)) {
		return false;
	}
	soma = 0;
	multiplicador = 2;
	for (f = seq.length - 2;f >= 0;f--) {
		soma += seq.substring(f,f + 1) * multiplicador;
		multiplicador++;
	}
	resto = soma % 11;
	if (resto == 1 || resto == 0) {
		digito = 0;
	}
	else {
		digito = 11 - resto;
	}
	if (digito != seq.substring(seq.length - 1,seq.length)) {
		return false;
	}
	return true;
}

//Verifica se o número de CGC informado é válido
function verifica_cgc(sequencia) {
	seq = sequencia;
	soma = 0;
	multiplicador = 2;
	for (f = seq.length - 3;f >= 0;f-- ) {
		soma += seq.substring(f,f + 1) * multiplicador;
		if ( multiplicador < 9 ) {
			multiplicador++;
		}
		else {
			multiplicador = 2;
		}
	}
	resto = soma % 11;
	if (resto == 1 || resto == 0) {
		digito = 0;
	}
	else {
		digito = 11 - resto;
	}
	if (digito != seq.substring(seq.length - 2,seq.length - 1)) {
		return false;
	}

	soma = 0;
	multiplicador = 2;
	for (f = seq.length - 2;f >= 0;f--) {
		soma += seq.substring(f,f + 1) * multiplicador;
		if (multiplicador < 9) {
			multiplicador++;
		}
		else {
			multiplicador = 2;
		}
	}
	resto = soma % 11;
	if (resto == 1 || resto == 0) {
		digito = 0;
	}
	else {
		digito = 11 - resto;
	}
	if (digito != seq.substring(seq.length - 1,seq.length)) {
		return false;
	}
	return true;
}

//Procura uma string dentro de outra string
function Procura_Str(param0,param1,param2) {
	for (a = param0 - 1;a < param1.length;a++) {
		for (b = 1;b < param1.length;b++) {
			if (param2 == param1.substring(b - 1,b + param2.length - 1)) {
				return a;
			}
		}
	}
	return 0;
}

//Limpa "." e "-" e "/"
function LimpaCPFCGC(strCPFCGC)
{
	return strCPFCGC.replace(/\./g,'').replace(/-/g,'').replace(/\//g,'')
}


// Funcao que formata o campo conforme a Digitação de Caracteres
// Utiliza evento OnKeyPress
// OBS: Este campo somente aceitará valores numéricos
// Parametro: << campo do formulario >>
// Retorno:
function FormataData( campo )
{	var tam = campo.value.length;
	if (((event.keyCode) >= 48 ) && ((event.keyCode) <= 57 ))
	{	event.keyCode;
		if ( ( tam == 2 ) || ( tam == 5 ) )
		{	campo.value = campo.value + "/";	}
	}
	else
	{	event.keyCode = 0;	}
}
-->
</script>

onkeydown="return mask_cpfcgc(form.name,this,18,event)" onkeyup="return form_cpfcgc(form.name,this,18,event)"

Depois de muito quebrar a cabeça, encontrei a solução e compartilho com vós outros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal como fazer esse script funcionar?

 

Inseri o script em no cabeçalho de uma pagina .asp e criei um formulario e no campo texto coloquei assim:

 

<input type="text" name="cpf-cnpj" onkeydown="return mask_cpfcgc(form.name,this,18,event)" onkeyup="return form_cpfcgc(form.name,this,18,event)">

 

mas não funionou!!!

 

precisa configurar mais alguma coisa?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O código do Pierre Bruno não estava funcionando pra mim também, então fiz uma modificações e agora funciona perfeitamente.

 

<html>
<head>
<script LANGUAGE="Javascript">
<!--
//Aplica a máscara no campo
//Função para ser utilizada nos eventos do input para formatação dinâmica
function aplica_mascara_cpfcnpj(campo,tammax,teclapres) {
	var tecla = teclapres.keyCode;

	if ((tecla < 48 || tecla > 57) && (tecla < 96 || tecla > 105) && tecla != 46 && tecla != 8) {
		return false;
	}

	var vr = campo.value;
	vr = vr.replace( /\//g, "" );
	vr = vr.replace( /-/g, "" );
	vr = vr.replace( /\./g, "" );
	var tam = vr.length;

	if ( tam <= 2 ) {
		campo.value = vr;
	}
	if ( (tam > 2) && (tam <= 5) ) {
		campo.value = vr.substr( 0, tam - 2 ) + '-' + vr.substr( tam - 2, tam );
	}
	if ( (tam >= 6) && (tam <= 8) ) {
		campo.value = vr.substr( 0, tam - 5 ) + '.' + vr.substr( tam - 5, 3 ) + '-' + vr.substr( tam - 2, tam );
	}
	if ( (tam >= 9) && (tam <= 11) ) {
		campo.value = vr.substr( 0, tam - 8 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + '-' + vr.substr( tam - 2, tam );
	}
	if ( (tam == 12) ) {
		campo.value = vr.substr( tam - 12, 3 ) + '.' + vr.substr( tam - 9, 3 ) + '/' + vr.substr( tam - 6, 4 ) + '-' + vr.substr( tam - 2, tam );
	}
	if ( (tam > 12) && (tam <= 14) ) {
		campo.value = vr.substr( 0, tam - 12 ) + '.' + vr.substr( tam - 12, 3 ) + '.' + vr.substr( tam - 9, 3 ) + '/' + vr.substr( tam - 6, 4 ) + '-' + vr.substr( tam - 2, tam );
	}
}

//Verifica se CPF ou CGC e encaminha para a devida função, no caso do cpf/cgc estar digitado sem mascara
function verifica_cpf_cnpj(cpf_cnpj) {
	if (cpf_cnpj.length == 11) {
		return(verifica_cpf(cpf_cnpj));
	} else if (cpf_cnpj.length == 14) {
		return(verifica_cnpj(cpf_cnpj));
	} else { 
		return false;
	}
	return true;
}

//Verifica se o número de CPF informado é válido
function verifica_cpf(sequencia) {
	if ( Procura_Str(1,sequencia,'00000000000,11111111111,22222222222,33333333333,44444444444,55555555555,66666666666,77777777777,88888888888,99999999999,00000000191,19100000000') > 0 ) {
		return false;
	}
	seq = sequencia;
	soma = 0;
	multiplicador = 2;
	for (f = seq.length - 3;f >= 0;f--) {
		soma += seq.substring(f,f + 1) * multiplicador;
		multiplicador++;
	}
	resto = soma % 11;
	if (resto == 1 || resto == 0) {
		digito = 0;
	} else {
		digito = 11 - resto;
	}
	if (digito != seq.substring(seq.length - 2,seq.length - 1)) {
		return false;
	}
	soma = 0;
	multiplicador = 2;
	for (f = seq.length - 2;f >= 0;f--) {
		soma += seq.substring(f,f + 1) * multiplicador;
		multiplicador++;
	}
	resto = soma % 11;
	if (resto == 1 || resto == 0) {
		digito = 0;
	} else {
		digito = 11 - resto;
	}
	if (digito != seq.substring(seq.length - 1,seq.length)) {
		return false;
	}
	return true;
}

//Verifica se o número de CNPJ informado é válido
function verifica_cnpj(sequencia) {
	seq = sequencia;
	soma = 0;
	multiplicador = 2;
	for (f = seq.length - 3;f >= 0;f-- ) {
		soma += seq.substring(f,f + 1) * multiplicador;
		if ( multiplicador < 9 ) {
			multiplicador++;
		} else {
			multiplicador = 2;
		}
	}
	resto = soma % 11;
	if (resto == 1 || resto == 0) {
		digito = 0;
	} else {
		digito = 11 - resto;
	}
	if (digito != seq.substring(seq.length - 2,seq.length - 1)) {
		return false;
	}

	soma = 0;
	multiplicador = 2;
	for (f = seq.length - 2;f >= 0;f--) {
		soma += seq.substring(f,f + 1) * multiplicador;
		if (multiplicador < 9) {
			multiplicador++;
		} else {
			multiplicador = 2;
		}
	}
	resto = soma % 11;
	if (resto == 1 || resto == 0) {
		digito = 0;
	} else {
		digito = 11 - resto;
	}
	if (digito != seq.substring(seq.length - 1,seq.length)) {
		return false;
	}
	return true;
}

//Procura uma string dentro de outra string
function Procura_Str(param0,param1,param2) {
	for (a = param0 - 1;a < param1.length;a++) {
		for (b = 1;b < param1.length;b++) {
			if (param2 == param1.substring(b - 1,b + param2.length - 1)) {
				return a;
			}
		}
	}
	return 0;
}

//Retira a máscara do valor de cpf_cnpj
function retira_mascara(cpf_cnpj) {
	return cpf_cnpj.replace(/\./g,'').replace(/-/g,'').replace(/\//g,'')
}
</script>
</head>
<body>
<form name='a'>
<input type="text" id="cpf-cnpj" name="cpf-cnpj" onkeydown="javascript:return aplica_mascara_cpfcnpj(this,18,event)" onkeyup="javascript:return aplica_mascara_cpfcnpj(this,18,event)">
</form>
</body>
</html>

Para validar um cpf/cnpj, use os comandos:

 

var campo = document.getElementById('cpf-cnpj');
//Mostra true se cpf/cnpj válido, false se inválido
alert(verifica_cpf_cnpj(retira_mascara(campo.value)));

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde,

 

Será que teria como me enviar este código, pq não sei o que estou fazendo de errado, mas não funcionou no IE e nem o Fire Fox, não sei arrumar.

 

Grato pela atenção

Elias

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz umas alterações para a máscara e CPF e CNPJ em campos separados. Funciona perfeitamente!

 

//Início do JavaScript que validará os campos CPF e CNPJ no cadastro de Cliente

 

function cpfoucnpj(){

if(document.cadastro.cli_cpf.value.length == 3){

document.cadastro.cli_cpf.value = document.cadastro.cli_cpf.value + '.';

return false;

}

if(document.cadastro.cli_cpf.value.length == 7){

document.cadastro.cli_cpf.value = document.cadastro.cli_cpf.value + '.';

return false;

}

if(document.cadastro.cli_cpf.value.length == 11){

document.cadastro.cli_cpf.value = document.cadastro.cli_cpf.value + '-';

return false;

}

if(document.cadastro.cli_cnpj.value.length == 2){

document.cadastro.cli_cnpj.value = document.cadastro.cli_cnpj.value + '.';

return false;

}

if(document.cadastro.cli_cnpj.value.length == 6){

document.cadastro.cli_cnpj.value = document.cadastro.cli_cnpj.value + '.';

return false;

}

if(document.cadastro.cli_cnpj.value.length == 10){

document.cadastro.cli_cnpj.value = document.cadastro.cli_cnpj.value + '/';

return false;

}

if(document.cadastro.cli_cnpj.value.length == 15){

document.cadastro.cli_cnpj.value = document.cadastro.cli_cnpj.value + '-';

return false;

}

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caros, continuando o tópico...Estou querendo o CPF e CNPJ no mesmo campo. Estou usando o seguinte:

 

function jscpfcnpj(v){
v=v.replace(/\D/g,"");
if (v.length > 0 && v.length <= 14) {
v=v.replace(/(\d{3})(\d)/,"$1.$2");
v=v.replace(/(\d{3})(\d)/,"$1.$2");
v=v.replace(/(\d{3})(\d{1,2})$/,"$1-$2");
} else {
v=v.replace(/^(\d{2})(\d)/,"$1.$2");
v=v.replace(/^(\d{2})\.(\d{3})(\d)/,"$1.$2.$3");
v=v.replace(/\.(\d{3})(\d)/,".$1/$2");
v=v.replace(/(\d{4})(\d)/,"$1-$2");
}
return v;
}
O CPF funciona perfeitamente mas o CNPJ retorna um zero a mais no final: 12.345.678/0001-000.
O input está assim:
<input class="cadastro" type="text" id="cpfcnpj" style="width: 180px" name="cpfcnpj" size="18" onkeypress="mascara(this,jscpfcnpj)" onblur="clearTimeout()" maxlength="18" /></div>
Agradeço qualquer ajuda.
Abs
JR

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.