Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) problema em formatar cnpj


egalauber

Pergunta

estou tentando fazer um formulário q vá formatando o q o usuário vai digitando.

alguns campos funcionam beleza mas o cnpj não.

é difícil de explicar o q acontece, copiem essa parte do código e testem aí rapidinho q vocês vão ver na hora!!

reparei q este problema acontece quando tenho 3 objetos seguidos, (3 .) ou (3 -) ou (3 /), como no cnpj tem 3 pontos e só depois um ífem (99.999.999.9999-99)

o script eu peguei aqui mesmo no site.

ajudem aí galera!!!

agradeço

<script language="javascript">
 function txtBoxFormat(objeto, sMask, evtKeyPress) {
    var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;


if(document.all) { // Internet Explorer
    nTecla = evtKeyPress.keyCode;
} else if(document.layers) { // Nestcape
    nTecla = evtKeyPress.which;
} else {
    nTecla = evtKeyPress.which;
    if (nTecla == 8) {
        return true;
    }
}

    sValue = objeto.value;

    // Limpa todos os caracteres de formatação que
    // já estiverem no campo.
    sValue = sValue.toString().replace( "-", "" );
    sValue = sValue.toString().replace( "-", "" );
    sValue = sValue.toString().replace( ".", "" );
    sValue = sValue.toString().replace( ".", "" );
    sValue = sValue.toString().replace( "/", "" );
    sValue = sValue.toString().replace( "/", "" );
    sValue = sValue.toString().replace( ":", "" );
    sValue = sValue.toString().replace( ":", "" );
    sValue = sValue.toString().replace( "(", "" );
    sValue = sValue.toString().replace( "(", "" );
    sValue = sValue.toString().replace( ")", "" );
    sValue = sValue.toString().replace( ")", "" );
    sValue = sValue.toString().replace( " ", "" );
    sValue = sValue.toString().replace( " ", "" );
    fldLen = sValue.length;
    mskLen = sMask.length;

    i = 0;
    nCount = 0;
    sCod = "";
    mskLen = fldLen;

    while (i <= mskLen) {
      bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == "/") || (sMask.charAt(i) == ":"))
      bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " "))

      if (bolMask) {
        sCod += sMask.charAt(i);
        mskLen++;
      }
      else {
        sCod += sValue.charAt(nCount);
        nCount++;
      }

      i++;
    }

    objeto.value = sCod;

    if (nTecla != 8) { // backspace
      if (sMask.charAt(i-1) == "9") { // apenas números...
        return ((nTecla > 47) && (nTecla < 58)); } 
      else { // qualquer caracter...
        return true;
      } 
    }
    else {
      return true;
    }
  }
</script>

<form action="cadastrando cliente.php" method="post" name="cadastrocliente">
 <input type="text" name="telefone" onKeyPress="return txtBoxFormat(this, '(99)9999-9999', event);" maxlength="13" size="25" />
 <br>
 <input type="text" name="celular" onKeyPress="return txtBoxFormat(this, '(99)9999-9999', event);" maxlength="13" size="25" />
 <br>
 <input type="text" name="cpf" onKeyPress="return txtBoxFormat(this, '999.999.999-99', event);" maxlength="14" size="25" />
 <br>
 <input type="text" name="cnpj" onKeyPress="return txtBoxFormat(this, '99.999.999.9999-99', event);" maxlength="18" size="25" />
 <br>
</form>

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Mudei o script.

este funcionou:

<script language="javascript">
// JavaScript Document
//adiciona mascara de cnpj
function MascaraCNPJ(cnpj){
    if(mascaraInteiro(cnpj)==false){
        event.returnValue = false;
    }    
    return formataCampo(cnpj, '00.000.000/0000-00', event);
}

//adiciona mascara ao CPF
function MascaraCPF(cpf){
    if(mascaraInteiro(cpf)==false){
        event.returnValue = false;
    }    
    return formataCampo(cpf, '000.000.000-00', event);
}


//valida o CPF digitado
function ValidarCPF(Objcpf){
    var cpf = Objcpf.value;
    exp = /\.|\-/g
    cpf = cpf.toString().replace( exp, "" ); 
    var digitoDigitado = eval(cpf.charAt(9)+cpf.charAt(10));
    var soma1=0, soma2=0;
    var vlr =11;
    
    for(i=0;i<9;i++){
        soma1+=eval(cpf.charAt(i)*(vlr-1));
        soma2+=eval(cpf.charAt(i)*vlr);
        vlr--;
    }    
    soma1 = (((soma1*10)%11)==10 ? 0:((soma1*10)%11));
    soma2=(((soma2+(2*soma1))*10)%11);
    
    var digitoGerado=(soma1*10)+soma2;
    if(digitoGerado!=digitoDigitado && cpf != ""){  
        alert('CPF Invalido!');        
        Objcpf.focus();
        }
}

//valida numero inteiro com mascara
function mascaraInteiro(){
    if (event.keyCode < 48 || event.keyCode > 57){
        event.returnValue = false;
        return false;
    }
    return true;
}

//valida o CNPJ digitado
function ValidarCNPJ(ObjCnpj){
    var cnpj = ObjCnpj.value;
    var valida = new Array(6,5,4,3,2,9,8,7,6,5,4,3,2);
    var dig1= new Number;
    var dig2= new Number;
    
    exp = /\.|\-|\//g
    cnpj = cnpj.toString().replace( exp, "" ); 
    var digito = new Number(eval(cnpj.charAt(12)+cnpj.charAt(13)));
        
    for(i = 0; i<valida.length; i++){
        dig1 += (i>0? (cnpj.charAt(i-1)*valida[i]):0);    
        dig2 += cnpj.charAt(i)*valida[i];    
    }
    dig1 = (((dig1%11)<2)? 0:(11-(dig1%11)));
    dig2 = (((dig2%11)<2)? 0:(11-(dig2%11)));
    
    if(((dig1*10)+dig2) != digito && cnpj != ""){    
        alert('CNPJ Invalido!');
        ObjCnpj.focus();
        }
}

//formata de forma generica os campos
function formataCampo(campo, Mascara, evento) { 
    var boleanoMascara; 
    
    var Digitato = evento.keyCode;
    exp = /\-|\.|\/|\(|\)| /g
    campoSoNumeros = campo.value.toString().replace( exp, "" ); 
   
    var posicaoCampo = 0;     
    var NovoValorCampo="";
    var TamanhoMascara = campoSoNumeros.length;; 
    
    if (Digitato != 8) { // backspace 
        for(i=0; i<= TamanhoMascara; i++) { 
            boleanoMascara  = ((Mascara.charAt(i) == "-") || (Mascara.charAt(i) == ".")
                                || (Mascara.charAt(i) == "/")) 
            boleanoMascara  = boleanoMascara || ((Mascara.charAt(i) == "(") 
                                || (Mascara.charAt(i) == ")") || (Mascara.charAt(i) == " ")) 
            if (boleanoMascara) { 
                NovoValorCampo += Mascara.charAt(i); 
                  TamanhoMascara++;
            }else { 
                NovoValorCampo += campoSoNumeros.charAt(posicaoCampo); 
                posicaoCampo++; 
              }            
          }     
        campo.value = NovoValorCampo;
          return true; 
    }else { 
        return true; 
    }
}




function ValidaEmail()
{
  var obj = eval("document.cadastrocliente.email");
  var txt = obj.value;
  if ((txt.length != 0) && ((txt.indexOf("@") < 1) || (txt.indexOf('.') < 7)))
  {
    alert('Este email parece ser um email inválido. Por favor digite outro!');
    obj.focus();
  }
}


function Valida(){

var nome = document.cadastrocliente.nome.value;
var telefone = document.cadastrocliente.telefone.value;
var celular = document.cadastrocliente.celular.value;
var cnpj = document.cadastrocliente.cnpj.value;
var cpf = document.cadastrocliente.cpf.value;
var email = document.cadastrocliente.email.value;

if(nome != "" && telefone != "" && celular != "" && documento != "" && endereco != "" && bairro != "" && cidade != "" && pergunta != "x" && resposta != "" && email != "" && senha != "" && confirmaSenha != ""){
 document.cadastrocliente.envia.disabled = false;
 return
}
}

//função que restringe caracteres digitados. Números ou letras
function valida_digitos(Ncampo)
{
         //caracteres permitidos
         if(Ncampo=="nome")
         er=/[0-9]/;
         if(Ncampo=="telefone" || Ncampo=="celular")
         er=/[a-z]/;
         digito=document.getElementById(Ncampo).value;
         var tempor;
         
          for (var i=0;i<digito.length; i++) {
            tempor = digito.substring(i,i+1); 
            //se digitos não igual aos caracteres informado na variavel digitos, então é deletado
              if (er.test(digito)) {
              document.getElementById(Ncampo).value=digito.substring(0,digito.length-1);
             
             return false;
              break;
            }
           }
 }


function txtBoxFormat(objeto, sMask, evtKeyPress) {
    var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;


if(document.all) { // Internet Explorer
    nTecla = evtKeyPress.keyCode;
} else if(document.layers) { // Nestcape
    nTecla = evtKeyPress.which;
} else {
    nTecla = evtKeyPress.which;
    if (nTecla == 8) {
        return true;
    }
}

    sValue = objeto.value;

    // Limpa todos os caracteres de formatação que
    // já estiverem no campo.
    sValue = sValue.toString().replace( "-", "" );
    sValue = sValue.toString().replace( "-", "" );
    sValue = sValue.toString().replace( ".", "" );
    sValue = sValue.toString().replace( ".", "" );
    sValue = sValue.toString().replace( "/", "" );
    sValue = sValue.toString().replace( "/", "" );
    sValue = sValue.toString().replace( ":", "" );
    sValue = sValue.toString().replace( ":", "" );
    sValue = sValue.toString().replace( "(", "" );
    sValue = sValue.toString().replace( "(", "" );
    sValue = sValue.toString().replace( ")", "" );
    sValue = sValue.toString().replace( ")", "" );
    sValue = sValue.toString().replace( " ", "" );
    sValue = sValue.toString().replace( " ", "" );
    fldLen = sValue.length;
    mskLen = sMask.length;

    i = 0;
    nCount = 0;
    sCod = "";
    mskLen = fldLen;

    while (i <= mskLen) {
      bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == "/") || (sMask.charAt(i) == ":"))
      bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " "))

      if (bolMask) {
        sCod += sMask.charAt(i);
        mskLen++;
      }
      else {
        sCod += sValue.charAt(nCount);
        nCount++;
      }

      i++;
    }

    objeto.value = sCod;

    if (nTecla != 8) { // backspace
      if (sMask.charAt(i-1) == "9") { // apenas números...
        return ((nTecla > 47) && (nTecla < 58)); } 
      else { // qualquer caracter...
        return true;
      } 
    }
    else {
      return true;
    }
  }

</script>


<form action="cadastrando cliente.php" method="post" name="cadastrocliente">

Nome
<input type="text" name="nome" onKeyPress="valida_digitos('nome')" onKeyUp="return Valida()" maxlength="50" size="50" /><br><br>

Telefone
<input type="text" name="telefone" onKeyDown="valida_digitos('telefone')" onKeyPress="return txtBoxFormat(this, '(99)9999-9999', event);" onKeyUp="return Valida()" maxlength="13" size="20" /><br><br>

Celular
<input type="text" name="celular" onKeyDown="valida_digitos('celular')" onKeyPress="return txtBoxFormat(this, '(99)9999-9999', event);" onKeyUp="return Valida()" maxlength="13" size="20" /><br><br>

CNPJ
<input type="text" name="cnpj" onKeyPress="MascaraCNPJ(cadastrocliente.cnpj);" onBlur="ValidarCNPJ(cadastrocliente.documento);" onKeyUp="return Valida()" maxlength="18" size="50" /><br><br>

CPF
<input type="text" name="documento" onKeyPress="MascaraCPF(cadastrocliente.documento);" onBlur="ValidarCPF(cadastrocliente.cpf);" onKeyUp="return Valida()" maxlength="14" size="50" /><br><br>

Email
<input type="text" name="email" onKeyUp="return Valida()" onBlur="ValidaEmail();" maxlength="30" size="50" /><br><br>

</form>

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...