Ir para conteúdo

POWERED BY:

Arquivado

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

rogarfil

Função CPF

Recommended Posts

Prezados Colegas,

 

Um de nossos milhares de colaboradores fez esse código que eu adaptei as minhas necessidade, o que faz?

A pessoa digita o CPF ele é validado e passa para o próximo campo, quando o CPF for invalido, recebe-se um alert de invalido e o focus fica no mesmo campo (limpando o campo).

Só que no IECA e no FIREFOX isso não acontece o focus passa para o campo seguinte, como tivesse validade (limpando o campo).

Como resolver este impasse.

function valida() {
    if (valida_cpf(document.getElementById('cpf').value))
        return false;
    else
        alert('CPF Inválido');
        document.getElementById('cpf').value = ''; //limpa o campo cpf
        
        document.cadastro.pk_usuario_cpf.focus(); //da foco ao campo
        
        
        return false;
}
 
function valida_cpf(cpf) {
    var numeros, digitos, soma, i, resultado, digitos_iguais;
    digitos_iguais = 1;
    if (cpf.length < 11)
        return false;
    for (i = 0; i < cpf.length - 1; i++)
        if (cpf.charAt(i) != cpf.charAt(i + 1))
        {
            digitos_iguais = 0;
            break;
        }
    if (!digitos_iguais)
    {
        numeros = cpf.substring(0, 9);
        digitos = cpf.substring(9);
        soma = 0;
        for (i = 10; i > 1; i--)
            soma += numeros.charAt(10 - i) * i;
        resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
        if (resultado != digitos.charAt(0))
            return false;
        numeros = cpf.substring(0, 10);
        soma = 0;
        for (i = 11; i > 1; i--)
            soma += numeros.charAt(11 - i) * i;
        resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
        if (resultado != digitos.charAt(1))
            return false;
        return true;
    }
    else
        return false;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Colocando as chaves obrigatórias.. se não, você vai executar muito mais do que acha que está executando..

 

function valida() {
    if (valida_cpf(document.getElementById('cpf').value)) {
        return false;
    } else {
        alert('CPF Inválido');
        document.getElementById('cpf').value = ''; //limpa o campo cpf
        
        document.cadastro.pk_usuario_cpf.focus(); //da foco ao campo
        
        
        return false;
    }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prezados Colegas Bruno's,

 

O evento utilizado Marco é:

<div class="campo">
<label for="cpf">CPF</label>
<input type="text" id="cpf" name="pk_usuario_cpf" style="width: 10em" onChange='valida(), mascara(this, mcpf);' maxlength="11" value="" />
</div>
William, coloquei as chaves e continua o evento no firefox e no IEca, saltando para o próximo campo. Como disse o objetivo e mante-lo no mesmo campo, o que ocorre normalmente no Chrome, Safari e Opera.
Abs,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente alterar

document.cadastro.pk_usuario_cpf.focus(); //da foco ao campo

para isso

document.getElementById('cpf').focus();

Ficando assim:

function valida() {
    if (valida_cpf(document.getElementById('cpf').value)) {
        alert('CPF valido');
        return false;
    } else {
        alert('CPF Inválido');
        document.getElementById('cpf').value = ''; //limpa o campo cpf
        document.getElementById('cpf').focus(); //da foco ao camp
        return false;
    }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prezados Colegas,

 

o evento que chama esta função é: onChange='valida()';

 

a função é:

function valida() {
if (valida_cpf(document.getElementById('cpf').value)){
return false;
}else{
alert('CPF Inválido');
document.getElementById('cpf').value = ''; //limpa o campo cpf
document.getElementById('cpf').focus(); // da foco ao campo cpf
return false;
}
}
Ele faz todo o procedimento no evento }else{ quando é digitado o CPF errado, mas não mantém o foco no campo, para um nova digitação do CPF.
Abs,

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.