Posted 09/07/2008, 13:24
Senhores, vi o código de vocês e fiz uma pequena adaptacao. Agora é possível digitar até os 9 dígitos primeiros do CPF e até os 8 primeiros do CNPJ que o script interpreta o que foi digitado, não precisando gerar mais randomicamente aquele caracter, e cria o restante necessário.
Obrigado por terem disponibilizado este código para que eu sanasse o meu problema e somente tivesse que fazer a devida adaptacao.
Em seguida vai o código:
<html>
<head>
<title>Gerador de CPF e CNPJ</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
// ==========================================
// Gerador de CPF e CNPJ
// Data: 06/06/2004
// ==========================================
function gera_random(n)
{
var ranNum = Math.round(Math.random()*n);
return ranNum;
}
function mod(dividendo,divisor)
{
return Math.round(dividendo - (Math.floor(dividendo/divisor)*divisor));
}
function cpf()
{
var txt = document.getElementById("numero").value;
txt = txt.replace(/[\.\-\/]/,"");
var n = 9;
var n1 = (txt.substr(0,1) != "") ? txt.substring(0,1) : gera_random(n);
var n2 = (txt.substr(1,2) != "") ? txt.substring(1,2) : gera_random(n);
var n3 = (txt.substr(2,3) != "") ? txt.substring(2,3) : gera_random(n);
var n4 = (txt.substr(3,4) != "") ? txt.substring(3,4) : gera_random(n);
var n5 = (txt.substr(4,5) != "") ? txt.substring(4,5) : gera_random(n);
var n6 = (txt.substr(5,6) != "") ? txt.substring(5,6) : gera_random(n);
var n7 = (txt.substr(6,7) != "") ? txt.substring(6,7) : gera_random(n);
var n8 = (txt.substr(7,8) != "") ? txt.substring(7,8) : gera_random(n);
var n9 = (txt.substr(8,9) != "") ? txt.substring(8,9) : gera_random(n);
var d1 = n9*2+n8*3+n7*4+n6*5+n5*6+n4*7+n3*8+n2*9+n1*10;
d1 = 11 - ( mod(d1,11) );
if (d1>=10) d1 = 0;
var d2 = d1*2+n9*3+n8*4+n7*5+n6*6+n5*7+n4*8+n3*9+n2*10+n1*11;
d2 = 11 - ( mod(d2,11) );
if (d2>=10) d2 = 0;
return ''+n1+n2+n3+'.'+n4+n5+n6+'.'+n7+n8+n9+'-'+d1+d2;
}
function cnpj()
{
var txt = document.getElementById("numero").value;
txt = txt.replace(/[\.\-\/]/,"");
var n = 9;
var n1 = (txt.substr(0,1) != "") ? txt.substring(0,1) : gera_random(n);
var n2 = (txt.substr(1,2) != "") ? txt.substring(1,2) : gera_random(n);
var n3 = (txt.substr(2,3) != "") ? txt.substring(2,3) : gera_random(n);
var n4 = (txt.substr(3,4) != "") ? txt.substring(3,4) : gera_random(n);
var n5 = (txt.substr(4,5) != "") ? txt.substring(4,5) : gera_random(n);
var n6 = (txt.substr(5,6) != "") ? txt.substring(5,6) : gera_random(n);
var n7 = (txt.substr(6,7) != "") ? txt.substring(6,7) : gera_random(n);
var n8 = (txt.substr(7,8) != "") ? txt.substring(7,8) : gera_random(n);
var n9 = 0;//gera_random(n);
var n10 = 0;//gera_random(n);
var n11 = 0;//gera_random(n);
var n12 = 1;//gera_random(n);
var d1 = n12*2+n11*3+n10*4+n9*5+n8*6+n7*7+n6*8+n5*9+n4*2+n3*3+n2*4+n1*5;
d1 = 11 - ( mod(d1,11) );
if (d1>=10) d1 = 0;
var d2 = d1*2+n12*3+n11*4+n10*5+n9*6+n8*7+n7*8+n6*9+n5*2+n4*3+n3*4+n2*5+n1*6;
d2 = 11 - ( mod(d2,11) );
if (d2>=10) d2 = 0;
return ''+n1+n2+'.'+n3+n4+n5+'.'+n6+n7+n8+'/'+n9+n10+n11+n12+'-'+d1+d2;
}
function faz()
{
if (document.form1.tipo[0].checked)
document.form1.numero.value = cpf();
else
document.form1.numero.value = cnpj();
}
</script>
</head>
<body>
<form name="form1" method="post" action="">
<table width="261" border="0" align="center" cellpadding="5" cellspacing="0" style="border: 1 solid #C0C0C0">
<tr align="center">
<td colspan="2" bgcolor="#FF6600" style="border-bottom: 1 solid #C0C0C0"><font color="#FFFFFF" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>GERADOR
DE CPF E CPNJ!</strong></font></td>
</tr>
<tr>
<td colspan="2" align="center" bgcolor="#F4F4F4" style="border-bottom: 1 solid #C0C0C0"><input name="numero" type="text" id="numero" size="20" value="123"></td>
</tr>
<tr>
<td width="168" align="center" bgcolor="#F4F4F4"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
<input name="tipo" type="radio" value="cpf" checked>
CPF
<input type="radio" name="tipo" value="cnpj">
CNPJ</font></td>
<td width="126" align="center" bgcolor="#DADADA" style="border-left: 1 solid #C0C0C0"><input type="button" name="Button" value="Gerar" onClick="faz()"></td>
</tr>
</table>
</form>
</body>
</html>
Evaldo Barbosa
Programador