Ir para conteúdo

POWERED BY:

Arquivado

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

Eduardo Villa

Erro ao validar RG, CPF, CNPJ, CEP e TELEFONE

Recommended Posts

Olá galera,

Estou com problemas para validar o seguinte formulário.

Ele não está validando ao enviar e sim ao sair do campo digitado...

 

E tentei colocar para validar ao enviar e ele está passando mesmo depois de alertar o erro...

 

formulário(PHP)

echo "<form method=post action=funcao_editais.php?funcao=cadastrar name=cadlicitacao id=cadlicitacao onload=document.cadlicitacao.reset1.click(); onSubmit=ValidarCPF(form.cpf);ValidarCNPJ(form.cnpj);ValidaCep(form.cep);ValidaTelefone(form.telefone);>
		<input type=hidden name=status value=sim />
		<input type=hidden name=funcao value=cadastrar />
		<span class=formulario>Pessoa</span>
		<select id=selectOK onchange=ChamarLink(); class=formulario >
    		<option value=\"\">Selecione</option>
    		<option value=\"01\">Física</option>
    		<option value=\"02\">Jurídica</option>
		</select>
		<div id=pf style=display:none;>
			<span class=formulario>RG: </span><input type=text name=rg onfocus=limparPadrao(this); onblur=escreverPadrao(this); value=\"000000000\" maxlength=9 class=formulario > 
			<span class=formulario>CPF: </span><input type=text name=cpf onblur=escreverPadrao(this); onfocus=limparPadrao(this); onkeypress=MascaraCPF(form.cpf); value=\"000.000.000-00\" maxlength=14 class=formulario >
		</div>
		<div id=pj style=display:none;>
			<input type=text name=inscricaoestadual onfocus=limparPadrao(this); onblur=escreverPadrao(this); value=\"Insc. Estadual...\" class=formulario > 
			<span class=formulario>CNPJ: </span><input type=text name=cnpj onkeypress=MascaraCNPJ(form.cnpj); onfocus=limparPadrao(this); value=\"00.000.000/0000-00\" onblur=escreverPadrao(this); maxlength=18 class=formulario >
		</div>
		
		<p>
		<input name=responsavel type=text onfocus=limparPadrao(this); onblur=escreverPadrao(this); value=\"Digite seu nome...\" class=formulario />
		<input name=email type=text onfocus=limparPadrao(this); onblur=escreverPadrao(this); value=\"Digite seu e-mail...\" class=formulario /><br />
		<input name=usuario type=text onfocus=limparPadrao(this); onblur=escreverPadrao(this); value=\"Digite seu usuário...\" class=formulario />
		<input name=senha type=password onfocus=limparPadrao(this); onblur=escreverPadrao(this); value=\"Senha...\" class=formulario /><br />

		<input name=endereco type=text onfocus=limparPadrao(this); onblur=escreverPadrao(this); value=\"Digite seu endereço...\" class=formulario />
		<input name=cep type=text onblur=escreverPadrao(this); onfocus=limparPadrao(this); onkeypress=MascaraCep(form.cep); value=\"Digite seu CEP...\" maxlength=10 class=formulario /><br />
		<select class=formulario name=estado OnChange=javascript:filtra();>
			<option value=AC>Acre</option>
			<option value=AL>Alagoas</option>
			<option value=AP>Amapá</option>
			<option value=AM>Amazonas</option>
			<option value=BA>Bahia</option>
			<option value=CE>Ceará</option>
			<option value=DF>Distrito Federal</option>
			<option value=ES>Espírito Santo</option>
			<option value=GO>Goiás</option>
			<option value=MA>Maranhão</option>
			<option value=MT>Mato Grosso</option>
			<option value=MS>Mato Grosso do Sul</option>
			<option value=MG>Minas Gerais</option>
			<option value=PA>Pará</option>
			<option value=PB>Paraíba</option>
			<option value=PR>Paraná</option>
			<option value=PE>Pernambuco</option>
			<option value=PI>Piauí</option>
			<option value=RJ>Rio de Janeiro</option>
			<option value=RN>Rio Grande do Norte</option>
			<option value=RS>Rio Grande do Sul</option>
			<option value=RO>Rondônia</option>
			<option value=RR>Roraima</option>
			<option value=SC>Santa Catarina</option>
			<option value=SP SELECTED>São Paulo</option>
			<option value=SE>Sergipe</option>
			<option value=TO>Tocantins</option>
		</select>
		<select class=formulario name=cidade size=1 OnChange=javascript:MudaCidade()></select><br />
		<input class=formulario name=telefone onkeypress=MascaraTelefone(form.telefone); onfocus=limparPadrao(this); value=\"DDD+Telefone\" onblur=escreverPadrao(this); maxlength=14>
		<input name=Submit type=submit class=botao_indicar value=Cadastrar align=right onClick=ValidarCPF(form.cpf);ValidarCNPJ(form.cnpj);ValidaCep(form.cep);ValidaTelefone(form.telefone); />
	  </form><br /><br /></p>";

valida.js

//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 de cep
function MascaraCep(cep){
                if(mascaraInteiro(cep)==false){
                event.returnValue = false;
        }       
        return formataCampo(cep, '00.000-000', event);
}

//adiciona mascara de data
function MascaraData(data){
        if(mascaraInteiro(data)==false){
                event.returnValue = false;
        }       
        return formataCampo(data, '00/00/0000', event);
}

//adiciona mascara ao telefone
function MascaraTelefone(tel){  
        if(mascaraInteiro(tel)==false){
                event.returnValue = false;
        }       
        return formataCampo(tel, '(00) 0000-0000', event);
}

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

//valida telefone
function ValidaTelefone(tel){
        exp = /\(\d{2}\)\ \d{4}\-\d{4}/
        if(!exp.test(tel.value))
                alert('Numero de Telefone Invalido!');
}

//valida CEP
function ValidaCep(cep){
        exp = /\d{2}\.\d{3}\-\d{3}/
        if(!exp.test(cep.value))
                alert('Numero de Cep Invalido!');               
}

//valida data
function ValidaData(data){
        exp = /\d{2}\/\d{2}\/\d{4}/
        if(!exp.test(data.value))
                alert('Data Invalida!');                        
}

//valida o CPF digitado
function ValidarCPF(Objcpf){
        var cpf = Objcpf.value;
		//if(cpf = '000.000.000-00')        
        	//alert('O campo CPF é obrigatório!');
        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)        
                alert('CPF Invalido!');         
}

//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;
		if(cnpj == '00.000.000/0000-00')        
        	alert('O campo CPF é obrigatório!');
        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)  
                alert('CNPJ Invalido!');
                
}

//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; 
        }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente utilizar essa máscara que formata o número automaticamente:

Máscara inteligente

 

Eu particularmente permito o usuário inserir apenas números para CPF, CEP, RG, CNPJ, e valido a quantidade de números, formatando esses dígitos no script PHP. Isso faz com que não ocorram erros de inserção no Banco de Dados.

 

Para datas, eu crio inputs select, também para evitar erros de digitação no caso do mês, ou do ano: 10 é diferente de 2010.

 

Mas fica a opção do link aí em cima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só uma dica coloca as aspas "" nos eventos certim. Principalmente no onsubmit, talvez o erro esteja lá.

 

Ao chamar as funções no onsubmit, coloque só o nome da form ou crie uma unica função que faça isso de acordo com a rotina do seu formulario. (Claro, isso é a gosto do fregues... http://forum.imasters.com.br/public/style_emoticons/default/natal_biggrin.gif )

 

Da uma olhadinha nisso e ve no que dá...^^

 

Abraço!!

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.