Esse codigo esta perfeito como eu quero, esta verificando o cpf quase certo é ai que ta o proble...
Se eu botar um cpf inválido ele avisa que o cpf é invalido e a apaga o cpf, mas dai quando eu digito novamente o cpf mesbo botando invalido ele não exibe o aleta de cpf inválido...
Esse é o Codigo..
<html>
<head>
<script language="javascript">
var msgCPF = "no";
/*
Validação do CPF através do módulo 11
*/
//função que verifica a veracidade do CPF
function VerificaCPF(nome) {
var CPF = getValue(nome); // Recebe o valor digitado no campo
// Verifica se o campo é nulo
if (CPF == '') {
return false;
}
CPF = Limp(CPF);
total = CPF.length;
for(t=0; t < 10; t++){
cont = 0;
for(a=0; a < total; a++){
if(CPF.substring(a,a+1)==(t+'')){
cont++;
if(cont == 11){alert('CPF inválido.'); return false;}
}
}
}
// Aqui começa a checagem do CPF
var POSICAO, I, SOMA, DV, DV_INFORMADO;
var DIGITO = new Array(10);
DV_INFORMADO = CPF.substr(9, 2); // Retira os dois últimos dígitos do número informado
// Desemembra o número do CPF na array DIGITO
for (I=0; I<=8; I++) {
DIGITO[I] = CPF.substr( I, 1);
}
// Calcula o valor do 10º dígito da verificação
POSICAO = 10;
SOMA = 0;
for (I=0; I<=8; I++) {
SOMA = SOMA + DIGITO[I] * POSICAO;
POSICAO = POSICAO - 1;
}
DIGITO[9] = SOMA % 11;
if (DIGITO[9] < 2) { DIGITO[9] = 0; }
else{ DIGITO[9] = 11 - DIGITO[9]; }
// Calcula o valor do 11º dígito da verificação
POSICAO = 11;
SOMA = 0;
for (I=0; I<=9; I++) {
SOMA = SOMA + DIGITO[I] * POSICAO;
POSICAO = POSICAO - 1;
}
DIGITO[10] = SOMA % 11;
if (DIGITO[10] < 2) { DIGITO[10] = 0; }
else { DIGITO[10] = 11 - DIGITO[10]; }
// Verifica se os valores dos dígitos verificadores conferem
DV = DIGITO[9] * 10 + DIGITO[10];
if (DV != DV_INFORMADO) {
if(msgCPF == 'no') alert('CPF inválido');
//document.forms[0].CPF.focus();
//document.forms[0].CPF.value = '';
return false;
}
return true;
}
function FormataCPF(nome){
CPF = getValue(nome);
CPF = Limp(CPF);
if(CPF.length == 11){
value = Mascara(CPF, '999.999.999-99');
setValue(nome, value);
msgCPF = 'no';
} else {
if(CPF.length > 0){
erroValue = ('Verifique o CPF digitado, pois estão faltando ou sobrando números.');
msgCPF = 'yes';
} else msgCPF = 'no';
}
}
//função para Limpar e deixar somente os números.
function Limp(c){
qtd = c.length;
var v = '';
for (i=0; i < qtd; i++)
for(t=0; t < 10; t++){
if(c.substring(i,i+1) == t && c.substring(i,i+1) != " ") v += c.substring(i,i+1);}
return(v);
}
/*
Funções para pegar o valor, e atribuir um valor ao campo q às chama.
*/
function getValue(nome){
var obj = eval("document.forms[0]."+nome+".value");
return obj;
}
function setValue(nome, valor){
obj = eval("document.forms[0]."+nome);
obj.value = valor;
}
function Mascara(value, mascara){
tmp = mascara;
guarda = value;
cont = 0;
var caracter = new Array();
var position = new Array();
if(tmp.length > 0){
qtd = tmp.length;
for(i=0; i < tmp.length; i++){
tmpValue = tmp.substring(i,i+1);
if(tmpValue != 9){
caracter[cont] = tmpValue;
position[cont] = i;
cont++;
}
}
VALOR = value;
VALOR = Limp(VALOR);
if(VALOR.length == 0){
VALOR = '';
} else {
var value = '';
value += VALOR.substring(0,position[0])+caracter[0];
car = caracter.length;
for(j=1; j < car; j++)
value += VALOR.substring(position[j-1]-(j-1),position[j]-j)+caracter[j];
value += VALOR.substring(position[car-1]-(car-1), qtd);
VALOR = value;
}
return value;
}
return guarda;
}
</script>
</head>
<body onload="document.form.cpf.focus();">
<form name="form">
<input type="text" name="cpf" onchange="VerificaCPF(this.name); FormataCPF(this.name);">
</form>
</body>
</html>
Pergunta
MauF
Esse codigo esta perfeito como eu quero, esta verificando o cpf quase certo é ai que ta o proble...
Se eu botar um cpf inválido ele avisa que o cpf é invalido e a apaga o cpf, mas dai quando eu digito novamente o cpf mesbo botando invalido ele não exibe o aleta de cpf inválido...
Esse é o Codigo..
<html> <head> <script language="javascript"> var msgCPF = "no"; /* Validação do CPF através do módulo 11 */ //função que verifica a veracidade do CPF function VerificaCPF(nome) { var CPF = getValue(nome); // Recebe o valor digitado no campo // Verifica se o campo é nulo if (CPF == '') { return false; } CPF = Limp(CPF); total = CPF.length; for(t=0; t < 10; t++){ cont = 0; for(a=0; a < total; a++){ if(CPF.substring(a,a+1)==(t+'')){ cont++; if(cont == 11){alert('CPF inválido.'); return false;} } } } // Aqui começa a checagem do CPF var POSICAO, I, SOMA, DV, DV_INFORMADO; var DIGITO = new Array(10); DV_INFORMADO = CPF.substr(9, 2); // Retira os dois últimos dígitos do número informado // Desemembra o número do CPF na array DIGITO for (I=0; I<=8; I++) { DIGITO[I] = CPF.substr( I, 1); } // Calcula o valor do 10º dígito da verificação POSICAO = 10; SOMA = 0; for (I=0; I<=8; I++) { SOMA = SOMA + DIGITO[I] * POSICAO; POSICAO = POSICAO - 1; } DIGITO[9] = SOMA % 11; if (DIGITO[9] < 2) { DIGITO[9] = 0; } else{ DIGITO[9] = 11 - DIGITO[9]; } // Calcula o valor do 11º dígito da verificação POSICAO = 11; SOMA = 0; for (I=0; I<=9; I++) { SOMA = SOMA + DIGITO[I] * POSICAO; POSICAO = POSICAO - 1; } DIGITO[10] = SOMA % 11; if (DIGITO[10] < 2) { DIGITO[10] = 0; } else { DIGITO[10] = 11 - DIGITO[10]; } // Verifica se os valores dos dígitos verificadores conferem DV = DIGITO[9] * 10 + DIGITO[10]; if (DV != DV_INFORMADO) { if(msgCPF == 'no') alert('CPF inválido'); //document.forms[0].CPF.focus(); //document.forms[0].CPF.value = ''; return false; } return true; } function FormataCPF(nome){ CPF = getValue(nome); CPF = Limp(CPF); if(CPF.length == 11){ value = Mascara(CPF, '999.999.999-99'); setValue(nome, value); msgCPF = 'no'; } else { if(CPF.length > 0){ erroValue = ('Verifique o CPF digitado, pois estão faltando ou sobrando números.'); msgCPF = 'yes'; } else msgCPF = 'no'; } } //função para Limpar e deixar somente os números. function Limp(c){ qtd = c.length; var v = ''; for (i=0; i < qtd; i++) for(t=0; t < 10; t++){ if(c.substring(i,i+1) == t && c.substring(i,i+1) != " ") v += c.substring(i,i+1);} return(v); } /* Funções para pegar o valor, e atribuir um valor ao campo q às chama. */ function getValue(nome){ var obj = eval("document.forms[0]."+nome+".value"); return obj; } function setValue(nome, valor){ obj = eval("document.forms[0]."+nome); obj.value = valor; } function Mascara(value, mascara){ tmp = mascara; guarda = value; cont = 0; var caracter = new Array(); var position = new Array(); if(tmp.length > 0){ qtd = tmp.length; for(i=0; i < tmp.length; i++){ tmpValue = tmp.substring(i,i+1); if(tmpValue != 9){ caracter[cont] = tmpValue; position[cont] = i; cont++; } } VALOR = value; VALOR = Limp(VALOR); if(VALOR.length == 0){ VALOR = ''; } else { var value = ''; value += VALOR.substring(0,position[0])+caracter[0]; car = caracter.length; for(j=1; j < car; j++) value += VALOR.substring(position[j-1]-(j-1),position[j]-j)+caracter[j]; value += VALOR.substring(position[car-1]-(car-1), qtd); VALOR = value; } return value; } return guarda; } </script> </head> <body onload="document.form.cpf.focus();"> <form name="form"> <input type="text" name="cpf" onchange="VerificaCPF(this.name); FormataCPF(this.name);"> </form> </body> </html>Link para o comentário
Compartilhar em outros sites
22 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.