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>
Question
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 to comment
Share on other sites
22 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.