Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 149

cnpj e cpf no form

10-08-2010 17:52

Estou com um probleminha.
Tenho os campos no form:

</label>         <span class="cnpjcpf"><input type="radio" value="cpf" name="rad" onClick =0 class="radio">&nbsp;CPF&nbsp;&nbsp;<input type="radio" value="cnpj" name="rad" onClick =0 class="radio">&nbsp;CNPJ</span>         <label>         <input type="text" name="cpf_cnpj" size="18" OnKeyUp="cnpj_cpf(this.name,this.value,'formcliente',this.form)" onKeypress="campo_numerico()" maxlength="18" class="nomeF" />         </label>

e tenho o javascript para formatar tudo isso:

<SCRIPT LANGUAGE="JavaScript">    function campo_numerico (){          if (event.keyCode < 45 || event.keyCode > 57) event.returnValue = false;    }      /*function cnpj_cpf verifica qual das funcoes tem que chamar cpf ou cnpj*/      function cnpj_cpf(campo,documento,f,formi){       form = formi;           for (Count = 0; Count < 2; Count++){                   if (form.rad[Count].checked)                   break;       }           if (Count == 0){          mascara_cpf (campo,documento,f);       }         else{          mascara_cnpj (campo,documento,f);       }    }              function mascara_cnpj (campo,documento,f){       var mydata = '';       mydata = mydata + documento;         if (mydata.length == 2){          mydata   = mydata + '.';            ct_campo = eval("document."+f+"."+campo+".value = mydata");          ct_campo;       }         if (mydata.length == 6){                mydata   = mydata + '.';                  ct_campo = eval("document."+f+"."+campo+".value = mydata");                ct_campo;       }         if (mydata.length == 10){          mydata      = mydata + '/';            ct_campo1 = eval("document."+f+"."+campo+".value = mydata");          ct_campo1;       }         if (mydata.length == 15){                mydata      = mydata + '-';                  ct_campo1 = eval("document."+f+"."+campo+".value = mydata");                ct_campo1;       }         if (mydata.length == 18){            valida_cnpj(f,campo);       }              }      function mascara_cpf (campo,documento,f){          var mydata = '';          mydata = mydata + documento;            if (mydata.length == 3){             mydata   = mydata + '.';               ct_campo = eval("document."+f+"."+campo+".value = mydata");             ct_campo;          }            if (mydata.length == 7){                   mydata   = mydata + '.';                     ct_campo = eval("document."+f+"."+campo+".value = mydata");                   ct_campo;          }            if (mydata.length == 11){             mydata      = mydata + '-';               ct_campo1 = eval("document."+f+"."+campo+".value = mydata");             ct_campo1;          }            if (mydata.length == 14){               valida_cpf(f,campo);          }      }      function valida_cnpj(f,campo){          pri = eval("document."+f+"."+campo+".value.substring(0,2)");          seg = eval("document."+f+"."+campo+".value.substring(3,6)");          ter = eval("document."+f+"."+campo+".value.substring(7,10)");          qua = eval("document."+f+"."+campo+".value.substring(11,15)");          qui = eval("document."+f+"."+campo+".value.substring(16,18)");            var i;          var numero;          var situacao = '';            numero = (pri+seg+ter+qua+qui);            s = numero;            c = s.substr(0,12);          var dv = s.substr(12,2);          var d1 = 0;            for (i = 0; i < 12; i++){             d1 += c.charAt(11-i)*(2+(i % 8));          }            if (d1 == 0){             var result = "falso";          }             d1 = 11 - (d1 % 11);            if (d1 > 9) d1 = 0;               if (dv.charAt(0) != d1){                var result = "falso";             }            d1 *= 2;          for (i = 0; i < 12; i++){             d1 += c.charAt(11-i)*(2+((i+1) % 8));          }            d1 = 11 - (d1 % 11);          if (d1 > 9) d1 = 0;               if (dv.charAt(1) != d1){                var result = "falso";             }              if (result == "falso") {             alert("CNPJ inválido!");             aux1 = eval("document."+f+"."+campo+".focus");             aux2 = eval("document."+f+"."+campo+".value = ''");            }    }      function valida_cpf(f,campo){          pri = eval("document."+f+"."+campo+".value.substring(0,3)");          seg = eval("document."+f+"."+campo+".value.substring(4,7)");          ter = eval("document."+f+"."+campo+".value.substring(8,11)");          qua = eval("document."+f+"."+campo+".value.substring(12,14)");            var i;          var numero;            numero = (pri+seg+ter+qua);            s = numero;          c = s.substr(0,9);          var dv = s.substr(9,2);          var d1 = 0;            for (i = 0; i < 9; i++){             d1 += c.charAt(i)*(10-i);          }            if (d1 == 0){             var result = "falso";          }            d1 = 11 - (d1 % 11);          if (d1 > 9) d1 = 0;            if (dv.charAt(0) != d1){             var result = "falso";          }            d1 *= 2;          for (i = 0; i < 9; i++){             d1 += c.charAt(i)*(11-i);          }            d1 = 11 - (d1 % 11);          if (d1 > 9) d1 = 0;            if (dv.charAt(1) != d1){             var result = "falso";          }            if (result == "falso") {             alert("CPF inválido!");             aux1 = eval("document."+f+"."+campo+".focus");             aux2 = eval("document."+f+"."+campo+".value = ''");            }    } </SCRIPT>

Se eu seleciono o CPF por exemplo começo a preencher (digito uns 5 ou 6 números) e dou um tab ou clico com o mouse em outro campo, o form está aceitando. Tipo se eu digitar por exemplo CPF 000.000.000-0 e não digitar o último número e trocar de campo com tab ou mouse, está aceitando.

Não sei se fui claro.
Gostaria de solucionar este problema. Uma indicação de onde mudar.

até mais.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17385
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

cnpj e cpf no form

10-08-2010 20:18

Rodei esse script aqui e não funcionou nada, nem a máscara.
0
Tem um script legal em HTML, CSS, PHP, HTML, JavaScript, jQuery? Poste e compartilhe com os usuários do fórum :rock:
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 149

cnpj e cpf no form

10-08-2010 21:15

Estranho. Vou colocar todo o javascript que tenho para validação dos campos incluido este do CNPJ/CPF e todo o formulário.

<script language="javascript" type="text/javascript"> function critica() {         if(document.formcliente.tx_cliente.value=="")            {                    alert("Informe o seu nome completo");                    document.formcliente.tx_cliente.focus();                    return(false);            }                       if(document.formcliente.tx_empresa.value=="")            {                    alert("Informe o nome de sua empresa");                    document.formcliente.tx_empresa.focus();                    return(false);            }                    if(document.formcliente.cpf_cnpj.value=="")            {                    alert("Informe o CPNJ de sua empresa ou o seu CPF");                    document.formcliente.cpf_cnpj.focus();                    return(false);            }                      if(document.formcliente.tx_endereco.value=="")            {                    alert("Informe o seu endereço");                    document.formcliente.tx_endereco.focus();                    return(false);            }                    if(document.formcliente.tx_numero.value=="")            {                    alert("Informe o número");                    document.formcliente.tx_numero.focus();                    return(false);            }                      if(document.formcliente.tx_bairro.value=="")            {                    alert("Informe o bairro");                    document.formcliente.tx_bairro.focus();                    return(false);            }                    if(document.formcliente.tx_cep.value.length <= 9)            {                    alert("Informe o CEP corretamente");                    document.formcliente.tx_cep.focus();                    return(false);            }                              if(document.formcliente.tx_cidade.value=="")            {                    alert("Informe a sua Cidade");                    document.formcliente.tx_cidade.focus();                    return(false);            }                   if(document.formcliente.tx_uf.value=="")            {                    alert("Selecione o Estado");                    document.formcliente.tx_uf.focus();                    return(false);            }                     if(document.formcliente.tx_fone.value=="")            {                    alert("Informe o seu telefone");                    document.formcliente.tx_fone.focus();                    return(false);            }                      if(document.formcliente.tx_email.value=="")            {                    alert("Informe o email que receberá os orçamentos");                    document.formcliente.tx_email.focus();                    return(false);            }                      if(document.formcliente.tx_email.value.indexOf('@') == - 1 || document.formcliente.tx_email.value.indexOf('.') == -1)            {                    alert("Email inválido, digite novamente.");                    document.formcliente.tx_email.focus();                    return(false);            }                          if(document.formcliente.tx_login.value=="")            {                    alert("Crie o seu login se acesso.");                    document.formcliente.tx_login.focus();                    return(false);            }                        if(document.formcliente.tx_senha.value.length < 6)            {                    alert("Crie sua senha. Mínimo 6 caracteres.");                    document.formcliente.tx_senha.focus();                    return(false);            }                               return(true);         }     </script> <SCRIPT LANGUAGE="JavaScript">    function campo_numerico (){          if (event.keyCode < 45 || event.keyCode > 57) event.returnValue = false;    }      /*function cnpj_cpf verifica qual das funcoes tem que chamar cpf ou cnpj*/      function cnpj_cpf(campo,documento,f,formi){       form = formi;           for (Count = 0; Count < 2; Count++){                   if (form.rad[Count].checked)                   break;       }           if (Count == 0){          mascara_cpf (campo,documento,f);       }         else{          mascara_cnpj (campo,documento,f);       }    }              function mascara_cnpj (campo,documento,f){       var mydata = '';       mydata = mydata + documento;         if (mydata.length == 2){          mydata   = mydata + '.';            ct_campo = eval("document."+f+"."+campo+".value = mydata");          ct_campo;       }         if (mydata.length == 6){                mydata   = mydata + '.';                  ct_campo = eval("document."+f+"."+campo+".value = mydata");                ct_campo;       }         if (mydata.length == 10){          mydata      = mydata + '/';            ct_campo1 = eval("document."+f+"."+campo+".value = mydata");          ct_campo1;       }         if (mydata.length == 15){                mydata      = mydata + '-';                  ct_campo1 = eval("document."+f+"."+campo+".value = mydata");                ct_campo1;       }         if (mydata.length == 18){            valida_cnpj(f,campo);       }    }      function mascara_cpf (campo,documento,f){          var mydata = '';          mydata = mydata + documento;            if (mydata.length == 3){             mydata   = mydata + '.';               ct_campo = eval("document."+f+"."+campo+".value = mydata");             ct_campo;          }            if (mydata.length == 7){                   mydata   = mydata + '.';                     ct_campo = eval("document."+f+"."+campo+".value = mydata");                   ct_campo;          }            if (mydata.length == 11){             mydata      = mydata + '-';               ct_campo1 = eval("document."+f+"."+campo+".value = mydata");             ct_campo1;          }            if (mydata.length == 14){               valida_cpf(f,campo);          }      }      function valida_cnpj(f,campo){          pri = eval("document."+f+"."+campo+".value.substring(0,2)");          seg = eval("document."+f+"."+campo+".value.substring(3,6)");          ter = eval("document."+f+"."+campo+".value.substring(7,10)");          qua = eval("document."+f+"."+campo+".value.substring(11,15)");          qui = eval("document."+f+"."+campo+".value.substring(16,18)");            var i;          var numero;          var situacao = '';            numero = (pri+seg+ter+qua+qui);            s = numero;            c = s.substr(0,12);          var dv = s.substr(12,2);          var d1 = 0;            for (i = 0; i < 12; i++){             d1 += c.charAt(11-i)*(2+(i % 8));          }            if (d1 == 0){             var result = "falso";          }             d1 = 11 - (d1 % 11);            if (d1 > 9) d1 = 0;               if (dv.charAt(0) != d1){                var result = "falso";             }            d1 *= 2;          for (i = 0; i < 12; i++){             d1 += c.charAt(11-i)*(2+((i+1) % 8));          }            d1 = 11 - (d1 % 11);          if (d1 > 9) d1 = 0;               if (dv.charAt(1) != d1){                var result = "falso";             }                            if (result == "falso") {             alert("CNPJ inválido!");             aux1 = eval("document."+f+"."+campo+".focus");             aux2 = eval("document."+f+"."+campo+".value = ''");            }    }      function valida_cpf(f,campo){          pri = eval("document."+f+"."+campo+".value.substring(0,3)");          seg = eval("document."+f+"."+campo+".value.substring(4,7)");          ter = eval("document."+f+"."+campo+".value.substring(8,11)");          qua = eval("document."+f+"."+campo+".value.substring(12,14)");            var i;          var numero;            numero = (pri+seg+ter+qua);                 if(numero < 14){alert("inválido")}              s = numero;          c = s.substr(0,9);          var dv = s.substr(9,2);          var d1 = 0;            for (i = 0; i < 9; i++){             d1 += c.charAt(i)*(10-i);          }            if (d1 == 0){             var result = "falso";          }            d1 = 11 - (d1 % 11);          if (d1 > 9) d1 = 0;            if (dv.charAt(0) != d1){             var result = "falso";          }            d1 *= 2;          for (i = 0; i < 9; i++){             d1 += c.charAt(i)*(11-i);          }            d1 = 11 - (d1 % 11);          if (d1 > 9) d1 = 0;            if (dv.charAt(1) != d1){             var result = "falso";          }            if (result == "falso") {             alert("CPF inválido!");             aux1 = eval("document."+f+"."+campo+".focus");             aux2 = eval("document."+f+"."+campo+".value = ''");            }    } </SCRIPT>       <script>   function mascara(o,f){     v_obj=o     v_fun=f     setTimeout("execmascara()",1) }   function execmascara(){         if(document.formcliente.tx_fone.value=="")            {                    alert("Informe o seu telefone");                    document.formcliente.tx_fone.focus();                    return(false);            }       v_obj.value=v_fun(v_obj.value) }   function leech(v){     v=v.replace(/o/gi,"0")     v=v.replace(/i/gi,"1")     v=v.replace(/z/gi,"2")     v=v.replace(/e/gi,"3")     v=v.replace(/a/gi,"4")     v=v.replace(/s/gi,"5")     v=v.replace(/t/gi,"7")     return v }   function soNumeros(v){     return v.replace(/\D/g,"") }   function fone(v){     v=v.replace(/\D/g,"")                 //Remove tudo o que não é dígito     v=v.replace(/^(\d\d)(\d)/g,"($1) $2") //Coloca parênteses em volta dos dois primeiros dígitos     v=v.replace(/(\d{4})(\d)/,"$1-$2")    //Coloca hífen entre o quarto e o quinto dígitos     return v }   function formatar(src, mask){   var i = src.value.length;   var saida = mask.substring(0,1);   var texto = mask.substring(i) if (texto.substring(0,1) != saida)   {     src.value += texto.substring(0,1);   } }   function SomenteNumero(e){     var tecla=(window.event)?event.keyCode:e.which;     if((tecla > 47 && tecla < 58)) return true;     else{     if (tecla != 8) return false;     else return true;     } }       </script> 

Formulário abaixo:

<form action="opcliente.php" method="post" id="contato" class="cont" name="formcliente" onsubmit="return critica()" >         <fieldset>         <h1>Se você ainda não é nosso cliente,<br />preencha todos os dados corretamente para<br /> poder utilizar o serviço de orçamentos on-line.</h1>         <label>         <span>Nome</span>         <input type="text" name="tx_cliente" class="nomeF"/>         </label>         <label>         <span>Empresa</span>         <input type="text" name="tx_empresa" class="nomeF"/>         </label>         <span class="cnpjcpf"><input type="radio" value="cpf" name="rad" onClick =0 class="radio">&nbsp;CPF&nbsp;&nbsp;<input type="radio" value="cnpj" name="rad" onClick =0 class="radio">&nbsp;CNPJ</span>         <label>         <input type="text" name="cpf_cnpj" size="18" OnKeyUp="cnpj_cpf(this.name,this.value,'formcliente',this.form)" onKeypress="campo_numerico()" maxlength="18" class="nomeF" />         </label>         <label>         <span>Endereço</span>         <input type="text" name="tx_endereco" class="endF"/>         </label>         <label>         <span>Número</span>         <input type="text" name="tx_numero" class="nunF" onkeypress="return SomenteNumero(event)" />         </label>         <label>         <span>Bairro</span>         <input type="text" name="tx_bairro" class="bairroF"/>         </label>         <label>         <span>CEP</span>         <input type="text" name="tx_cep" class="cepF" maxlength="10" minlength="10" OnKeyPress="formatar(this, '##.###-###')"/>         </label>         <label>         <span>Cidade</span>         <input type="text" name="tx_cidade" class="cidadeF"/>         </label>         <label>         <span>UF</span>         <select name="tx_uf" class="lista">         <option value=""></option>         <option value="Acre">AC</option>         <option value="Alagoas">AL</option>         <option value="Amapa">AP</option>         <option value="Amazonas">AM</option>         <option value="Bahia">BA</option>         <option value="Ceara">CE</option>         <option value="Distrito Federal">DF</option>         <option value="Espirito Santo">ES</option>         <option value="Goias">GO</option>         <option value="Maranhão">MA</option>         <option value="Mato Grosso">MT</option>         <option value="Mato Grosso do Sul">MS</option>         <option value="Minas Gerais">MG</option>         <option value="Para">PA</option>         <option value="Paraiba">PB</option>         <option value="Parana">PR</option>         <option value="Pernambuco">PE</option>         <option value="Piaui">PI</option>         <option value="Rio de Janeiro">RJ</option>         <option value="Rio Grande Do Norte">RN</option>         <option value="Rio Grande do Sul">RS</option>         <option value="Rondonia">RO</option>         <option value="Roraima">RR</option>         <option value="Santa Catarina">SC</option>         <option value="Sao Paulo">SP</option>         <option value="Sergipe">SE</option>         <option value="Tocantins">TO</option>         </select>         </label>         <label>         <span>Fone</span>         <input type="text" name="tx_fone" class="foneF" onkeypress="mascara(this,fone)" maxlength="14"/>         </label>         <label>         <span>E-mail</span>         <input type="text" name="tx_email" class="emailF"/>         </label>         <label>         <span>Login</span>         <input type="text" name="tx_login" class="nomeF" value="<?php $_login;?>"/>         </label>         <label>         <span>Senha</span>         <input type="password" name="tx_senha" class="nomeF"/>         </label>         <input type="hidden" value="acao" class="enviar" />         <input type="submit" value="Enviar" class="btn2" />         <h1>Obs.: Todos os campos são obrigatórios.</h1>         </fieldset>             </form>

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17385
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

cnpj e cpf no form

10-08-2010 22:09

Basicamente você tem que verificar se o valor digitado é menor que o total que deve ter, tipo

if(campo.length < 14) {
alert("menor")
}

Só que tem que estudar o script, e ele é bem grande.
0
Tem um script legal em HTML, CSS, PHP, HTML, JavaScript, jQuery? Poste e compartilhe com os usuários do fórum :rock:
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 149

cnpj e cpf no form

13-08-2010 07:39

Encontrei uma solução aqui. Não sei se é o correto, mas deu certo. Veja o que pode me dizer?
Fiz só com alguns campos para ficar menor aqui.

fiz assim. No form: tenho um (onsubmit="return validageral()), que retorna uma função para validar os outros campos, para não ficarem em branco

<form action="opcliente.php" method="post" id="contato" class="cont" name="formcliente" onsubmit="return validageral()" >         <fieldset>         <label>         <span>Empresa</span>         <input type="text" name="tx_empresa" class="nomeF"/>         </label>         <span class="cnpjcpf"><input type="radio" value="cpf" name="rad" onClick =0 class="radio">&nbsp;CPF&nbsp;&nbsp;<input type="radio" value="cnpj" name="rad" onClick =1 class="radio">&nbsp;CNPJ</span>         <label>         <input type="text" name="cpf_cnpj" size="18" OnKeyUp="cnpj_cpf(this.name,this.value,'formcliente',this.form)" onKeypress="campo_numerico()" maxlength="18" class="nomeF" />         </label>         <label>         <span>Endereço</span>         <input type="text" name="tx_endereco" class="endF"/>         </label> </fieldset> </form>

Então nesta função (validageral) eu validei pedindo para o usuário escolher uma das opções (radio), se não selecionar retorna msg e volta para o campo anterior ao clicar em enviar.
Se selecionado, caso seja CPF ele diz que o campo (através de lenght) não pode ser diferente de 14 caracteres (contado já barras e traços) e retorna uma msg. E o mesmo para CNPJ com 18 caracteres. E se o campo estiver em branco também retorna uma msg. Tudo ao clicar em enviar.

function validageral() {           if(document.formcliente.tx_empresa.value=="")            {                    alert("Informe o nome de sua empresa");                    document.formcliente.tx_empresa.focus();                    return(false);            }                              if ((document.formcliente.rad[0].checked) || (document.formcliente.rad[1].checked))         {                                 }else{         alert("Escolha CNPJ (jurídica) / CPF (física)");         document.formcliente.tx_empresa.focus()         return false                 }                                    if(document.formcliente.cpf_cnpj.value!="")            {                                   if((document.formcliente.rad[0].checked) && (document.formcliente.cpf_cnpj.value.length !=14))                 {                         alert("CPF inválido.")                         document.formcliente.cpf_cnpj.focus();                    return(false);                         }                                                           if((document.formcliente.rad[1].checked) && (document.formcliente.cpf_cnpj.value.length!= 18))                 {                                                 alert("CNPJ inválido.")                         document.formcliente.cpf_cnpj.focus();                    return(false);                                                                         }                                                     }else{ alert("Informe o CPNJ de sua empresa ou o seu CPF");                    document.formcliente.cpf_cnpj.focus();                    return(false);}                              if(document.formcliente.tx_endereco.value=="")            {                    alert("Informe o seu endereço");                    document.formcliente.tx_endereco.focus();                    return(false);            } }

Se o cliente selecionar a opção e digitar o número correto de caracteres, passa pela função de validação de cpf_cnpj que tinha mencionado no post anterior.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17385
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

cnpj e cpf no form

13-08-2010 09:16

Sim, essa validação no onsubmit parece válida.
0
Tem um script legal em HTML, CSS, PHP, HTML, JavaScript, jQuery? Poste e compartilhe com os usuários do fórum :rock:

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado