Ir para conteúdo

POWERED BY:

Arquivado

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

phpricardo

Validação CPF

Recommended Posts

Galera teu tenho script de validação de cpf e um separado de mascara de cpf também, mas teria algum fazendo a mesma coisa? um script só rodei nessa internet já um bucado antes de vim aqui questionar sobre isso, nada de qualidade achei.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, eu penso assim:

 

'uma coisa é uma coisa, e outra coisa é outra coisa'.

 

se você não pensar assim em programação, terá um amontoado de código que tenta fazer tudo, e então você vai fatalmente se perder no teu proprio código.

 

é possível: aplicar uma máscara e validar

mas não é necessário que seja o mesmo script.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse é os códigos.

De alguma forma eu penso que por causa dos pontos e - acrescentados devido a mascara o cpf não funciona pois tem esses implícitos. Lógico.

E eu estou ai perdido..

 



function validaCPF(cpf) 
 {
   erro = new String;
 
        if (cpf.value.length == 11)
        {       
 
                        var nonNumbers = /\D/;
        
                        if (nonNumbers.test(cpf.value)) 
                        {
                                        erro = "A verificacao de CPF suporta apenas números!"; 
                        }
                        else
                        {
                                        if (cpf.value == "00000000000" || 
                                                        cpf.value == "11111111111" || 
                                                        cpf.value == "22222222222" || 
                                                        cpf.value == "33333333333" || 
                                                        cpf.value == "44444444444" || 
                                                        cpf.value == "55555555555" || 
                                                        cpf.value == "66666666666" || 
                                                        cpf.value == "77777777777" || 
                                                        cpf.value == "88888888888" || 
                                                        cpf.value == "99999999999") {
                                                        
                                                        erro = "Número de CPF inválido!"
                                        }
        
                                        var a = [];
                                        var b = new Number;
                                        var c = 11;
 
                                        for (i=0; i<11; i++){
                                                        a[i] = cpf.value.charAt(i);
                                                        if (i < 9) b += (a[i] * --c);
                                        }
        
                                        if ((x = b % 11) < 2) { a[9] = 0 } else { a[9] = 11-x }
                                        b = 0;
                                        c = 11;
        
                                        for (y=0; y<10; y++) b += (a[y] * c--); 
        
                                        if ((x = b % 11) < 2) { a[10] = 0; } else { a[10] = 11-x; }
        
                                        if ((cpf.value.charAt(9) != a[9]) || (cpf.value.charAt(10) != a[10])) {
                                                erro = "Número de CPF inválido.";
                                                
                                        }
                        }
        }
        else
        {
                if(cpf.value.length == 0)
                        return false
                else
                        erro = "Número de CPF inválido.";
        }
        if (erro.length > 0) {
                        alert(erro);
                        cpf.focus();
                        return false;
        }       
        return true;    
 }
 
 function maskCPF(CPF) {
        var evt = window.event;
        kcode=evt.keyCode;
        if (kcode == 8) return;
        if (CPF.value.length == 3) { CPF.value = CPF.value + '.'; }
        if (CPF.value.length == 7) { CPF.value = CPF.value + '.'; }
        if (CPF.value.length == 11) { CPF.value = CPF.value + '-'; }
 }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então faz o seguinte, use o método .replace() da string, e remova tudo oque não for digito

antes de passar para a função de validação.

 

entendeu?

ai vai chegar a string do jeito que a função espera, com apenas numeros.

 

pesquise pelo método que indiquei, e sobre expressões regulares.

no caso da máscara, eu prefiro esta:

http://code.imasters.com.br/index.php?/topic/109-mascaras-enquanto-digita-er/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentarei aqui mano...

 

aproveitando..outra zinca..

 

tenho outra função pra validar números só que não estou conseguindo incrementa-la.

 

onKeyPress="return somenteNumeros(event,',.;');" // não ta funcionando.

 

function somenteNumeros(evnt,permitidos){ 
    /****************************************************************************************
    * Função para permitir somente digitação de número                                      *
    * sintaxe: somenteNumeros(event, [caracteres não numéricos permitidos])                 *
    * ex:  onKeyPress="return somenteNumeros(event,',.;');"                                 *
    ****************************************************************************************/
    
    if (evnt.charCode == undefined){
        var tecla = evnt.keyCode;
    }else{
        var tecla = evnt.charCode;
    }
    
    var teste = false;
    if (permitidos != undefined && permitidos != ""){
        if (permitidos.indexOf(String.fromCharCode(tecla)) != -1) teste = true;
    }
    
    if (clientNavigator == "IE"){ 
        if (tecla < 48 || tecla > 57){   
            return teste;   
        }   
    }else{
        if ((tecla < 48 || tecla > 57) && evnt.keyCode == 0){
            return teste;
        }
    }   
}   
  

só lembrando que quero usar ela em por exemplo datas que estão com mascara dd/mm/aaaa e outras situações que podem conter . e - ou espaço.

 

if (cpf.value.length == 14)
        {       
                        cpf.value = cpf.value.replace('.', '');
                        cpf.value = cpf.value.replace('.', '');
                        cpf.value = cpf.value.replace('-', '');
 
                        var nonNumbers = /\D/;

algo assim?

 

problema é que agora ok funciona, mas se vai pra outro input preencher ele volta ficar sem os . e - e logo na pagina de impressão teria que ter também. =\

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara não mande o valor sem a formatação pro input.

apenas faça isso dentro da função de validação, só isso.

 

pense um pouco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Está tão complicado pensar, essa m***** desse trabalho estava tão funcional ai inventam tanta coisa e pra cima da hora. Meu nível de conhecimento não é tudo isso ainda, só quero terminar e entregar se não fosse a urgência estaria buscando certo, mas na necessidade de entrega me obriga a isso.

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.