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..
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.