Ir para conteúdo

Arquivado

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

twpesquisa

CPF e CNPJ no mesmo input

Recommended Posts

Fala aí galera, tudo belezinha ?

 

Então, não sei se alguém já teve a necessidade de colocar no mesmo INPUT a digitação e validação do CPF e CNPJ e conforme vai digitando, vai criando a máscara conforme a quantidade de dígitos informados. Pois bem, os códigos baixo, já estão fazendo isso, ao digitar, já cria a máscara conforme a quantidade de dígitos, porém o meu pedido de ajuda, é fazer com que ao sair do campo, seja verificado se o CPF e/ou CNPJ são verdadeiros e caso não esteja correto, exibir uma mensagem e voltar o foco para o campo até que o mesmo esteja corrigido.

 

Alguém conste me dar uma mão nessa parada ?

 

Abração,

<!--
//Aplica a máscara no campo
//Função para ser utilizada nos eventos do input para formatação dinâmica
function aplica_mascara_cpfcnpj(campo,tammax,teclapres) {
    var tecla = teclapres.keyCode;

    if ((tecla < 48 || tecla > 57) && (tecla < 96 || tecla > 105) && tecla != 46 && tecla != 8) {
        return false;
    }

    var vr = campo.value;
    vr = vr.replace( /\//g, "" );
    vr = vr.replace( /-/g, "" );
    vr = vr.replace( /\./g, "" );
    var tam = vr.length;

    if ( tam <= 2 ) {
        campo.value = vr;
    }
    if ( (tam > 2) && (tam <= 5) ) {
        campo.value = vr.substr( 0, tam - 2 ) + '-' + vr.substr( tam - 2, tam );
    }
    if ( (tam >= 6) && (tam <= 8) ) {
        campo.value = vr.substr( 0, tam - 5 ) + '.' + vr.substr( tam - 5, 3 ) + '-' + vr.substr( tam - 2, tam );
    }
    if ( (tam >= 9) && (tam <= 11) ) {
        campo.value = vr.substr( 0, tam - 8 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + '-' + vr.substr( tam - 2, tam );
    }
    if ( (tam == 12) ) {
        campo.value = vr.substr( tam - 12, 3 ) + '.' + vr.substr( tam - 9, 3 ) + '/' + vr.substr( tam - 6, 4 ) + '-' + vr.substr( tam - 2, tam );
    }
    if ( (tam > 12) && (tam <= 14) ) {
        campo.value = vr.substr( 0, tam - 12 ) + '.' + vr.substr( tam - 12, 3 ) + '.' + vr.substr( tam - 9, 3 ) + '/' + vr.substr( tam - 6, 4 ) + '-' + vr.substr( tam - 2, tam );
    }
}

//Verifica se CPF ou CGC e encaminha para a devida função, no caso do cpf/cgc estar digitado sem mascara
function verifica_cpf_cnpj(cpf_cnpj) {
    if (cpf_cnpj.length == 11) {
        return(verifica_cpf(cpf_cnpj));
    } else if (cpf_cnpj.length == 14) {
        return(verifica_cnpj(cpf_cnpj));
    } else { 
        return false;
    }
    return true;
}

//Verifica se o número de CPF informado é válido
function verifica_cpf(sequencia) {
    if ( Procura_Str(1,sequencia,'00000000000,11111111111,22222222222,33333333333,44444444444,55555555555,66666666666,77777777777,88888888888,99999999999,00000000191,19100000000') > 0 ) {
        return false;
    }
    seq = sequencia;
    soma = 0;
    multiplicador = 2;
    for (f = seq.length - 3;f >= 0;f--) {
        soma += seq.substring(f,f + 1) * multiplicador;
        multiplicador++;
    }
    resto = soma % 11;
    if (resto == 1 || resto == 0) {
        digito = 0;
    } else {
        digito = 11 - resto;
    }
    if (digito != seq.substring(seq.length - 2,seq.length - 1)) {
        return false;
    }
    soma = 0;
    multiplicador = 2;
    for (f = seq.length - 2;f >= 0;f--) {
        soma += seq.substring(f,f + 1) * multiplicador;
        multiplicador++;
    }
    resto = soma % 11;
    if (resto == 1 || resto == 0) {
        digito = 0;
    } else {
        digito = 11 - resto;
    }
    if (digito != seq.substring(seq.length - 1,seq.length)) {
        return false;
    }
    return true;
}

//Verifica se o número de CNPJ informado é válido
function verifica_cnpj(sequencia) {
    seq = sequencia;
    soma = 0;
    multiplicador = 2;
    for (f = seq.length - 3;f >= 0;f-- ) {
        soma += seq.substring(f,f + 1) * multiplicador;
        if ( multiplicador < 9 ) {
            multiplicador++;
        } else {
            multiplicador = 2;
        }
    }
    resto = soma % 11;
    if (resto == 1 || resto == 0) {
        digito = 0;
    } else {
        digito = 11 - resto;
    }
    if (digito != seq.substring(seq.length - 2,seq.length - 1)) {
        return false;
    }

    soma = 0;
    multiplicador = 2;
    for (f = seq.length - 2;f >= 0;f--) {
        soma += seq.substring(f,f + 1) * multiplicador;
        if (multiplicador < 9) {
            multiplicador++;
        } else {
            multiplicador = 2;
        }
    }
    resto = soma % 11;
    if (resto == 1 || resto == 0) {
        digito = 0;
    } else {
        digito = 11 - resto;
    }
    if (digito != seq.substring(seq.length - 1,seq.length)) {
        return false;
    }
    return true;
}

//Procura uma string dentro de outra string
function Procura_Str(param0,param1,param2) {
    for (a = param0 - 1;a < param1.length;a++) {
        for (b = 1;b < param1.length;b++) {
            if (param2 == param1.substring(b - 1,b + param2.length - 1)) {
                return a;
            }
        }
    }
    return 0;
}

//Retira a máscara do valor de cpf_cnpj
function retira_mascara(cpf_cnpj) {
    return cpf_cnpj.replace(/\./g,'').replace(/-/g,'').replace(/\//g,'')
}
<html>
<head>
 <script src="MascaraValidacao.js" type="text/javascript"></script>
</head>
<body>
<form name='a'>
<input type="text" id="cpf-cnpj" name="cpf-cnpj" onkeydown="javascript:return aplica_mascara_cpfcnpj(this,18,event)" onkeyup="javascript:return aplica_mascara_cpfcnpj(this,18,event)" >

<input type="text" id="nome" name="nome" >
</form>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por juniormatrix
      Olá
       
      Achei esse script aqui no fórum mesmo:
       
      $.validator.addMethod( "customEmail", function (value, element) { return this.optional(element) || /^[\w-\.]+@fulano\.com\.br$/i.test(value); }, "Por favor, insira um e-mail válido com o domínio @fulano.com.br" ); $("#formulario").validate({ ignore: ".ignore", rules: { empresa: { required: true }, nome: { required: true }, contato: { required: true }, celular: { required: true }, email: { required: true, email: true, customEmail: true }, }, }); Testei e funcionou perfeitamente, mas gostaria que liberasse mais e-mails válidos, ao invés de apenas um.

      Tem como fazer? 
       
      Se alguém puder ajudar, fico muito grato.
    • Por estanieski_poa
      Estou com um sistema antigo, desenvolvido em Delphi 7+Oracle10g.
       
      O sistema funciona corretamente, mas ele começou a ficar solcititando usuário e senha do Oracle quando realizo pesquisar ou inserções no sistema.
       
      Como desativo essa solicitação?
    • Por chocomilki
      Olá,
       
      Como que eu faço para que não seja possível fazer 2 ou mais cadastros usando o mesmo CPF ?
       
      Obrigado
       
       
    • Por fideles
      Fala pessoal, tudo na paz? Como anda a quarentena ? Todos se cuidando....
       
      Seguinte, uma dúvida ou navalhada minha,
       
      Tenho um form simples, básico mesmo onde trampo, só para fazermos levantamento quando alguém chega.
       
      Nome da pessoa
      Um regime de contratação (CLT ou PJ) (input do tipo radio) (Nos value dos input radio tem CLT e PJ)
      Nome da empresa (campo oculto) (aqui funciona na boa)
       
      Preciso fazer com que se a pessoa clicar em PJ fazer ela preencher obrigatoriamente o campo "Nome da empresa" se ela for CLT não faz nada.
       
      Já tentei da seguinte forma e não da certo, talvez esteja errando por bobeira.
       
      if(empty($tipo_contratacao == "PJ")) { echo "<meta http-equiv='refresh' content='0; pesquisa_retorno_2.php'><script>alert('O campo nome da empresa não foi preenchido')</script>" ; return false; }  
      Alguém tem uma luz ?
       
      Obrigado.
    • Por szLeonardo
      Olá a todos,
      Estou com um problema no meu cadastro de usuário.
      A parte de cadastrar está sendo realizada corretamente e meu login também, o meu problema está é que tenho que cadastrar em uma tela, depois entrar em outra para validar e acessar.
      Gostaria que quando eu realizasse o cadastro já valida-se e entrasse direto, sem precisar ter que entrar na outra pagina e rodar o login.
       
      Segue meu cadastro que está funcionando:  
      //--Insere Registro   if(isset($_POST['cadastrar'])){     @$usuario      = trim(strip_tags($_POST['usuario']));     @$senha        = trim(strip_tags($_POST['senha']));     @$nivel_acesso = trim(strip_tags($_POST['nivel_acesso']));     $insert = "INSERT INTO cad_usuario (usuario, senha, nivel_acesso)                 VALUES (:usuario, :senha, :nivel_acesso)";   try{     $result = $conexao->prepare($insert);     $result->bindParam(':usuario',      $usuario, PDO::PARAM_STR);     $result->bindParam(':senha',        $senha, PDO::PARAM_STR);     $result->bindParam(':nivel_acesso', $nivel_acesso, PDO::PARAM_STR);     $result->execute();     $contar = $result->rowCount();   if($contar>0){     echo '<div class="alert alert-success">           <button type="button" class="close" data-dismiss="alert">×</button>           <strong>Sucesso!</strong> O Usuario foi Cadastrado!</div>';          $_SESSION['autenticado'] = true;   }else{     echo '<div class="alert alert-danger">           <button type="button" class="close" data-dismiss="alert">×</button>           <strong>Erro ao cadastrar!</strong> Não foi possível cadastrar o Usuario.</div>';   }}catch(PDOException $e){     echo $e;   }}   } }  
      Segue meu validador do usuário cadastrado que está funcionando: 
      <?php session_start(); include_once "connection/conecta.php"; $usuario = new Usuario(); try {   if($usuario->confere($_POST['usuario'],$_POST['senha'])) {     $_SESSION['autenticado'] = true;     $_SESSION['usuario'] = $_POST['usuario'];     header('location: principal.php');   } else {     $_SESSION['autenticado'] = false;     include_once "index.php";     exit("<div class='alert alert-danger col-sm-12'>Usuário ou senha incorretos. Verifique</div>");   } } catch(PDOException $p){   echo "Ocorreu um erro inesperado: ". $p->getMessage(); } ?>  
      Segue minha pagina principal aonde valida a $_SESSION['autenticado'] = false; 
      Mas só valida se passar na pagina index e passar pela validação a cima.
       <?php require_once("connection/conecta.php"); ob_start(); session_start();  if (@!$_SESSION['autenticado']){    include_once "index.php";    exit("<div class='alert alert-danger col-sm-12'>Para acessar o sistema você deve efetuar login</div>");  }     $logado = $_SESSION['usuario'];     $sql = "SELECT * from cad_usuario WHERE usuario = '$logado' and situacao = 'A'";     try{       $result = $conexao->prepare($sql);         $result->execute();       $contar = $result->rowCount();                if($contar =1){         $loop = $result->fetchAll();         foreach ($loop as $show){           $userLogado  = $show['usuario'];           $senhaLogado = $show['senha'];           $nivelLogado = $show['nivel_acesso'];         }       }       }catch (PDOWException $erro){ echo $erro;} ?>  
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.