Ir para conteúdo

POWERED BY:

Arquivado

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

santind2

[Resolvido] value anulando função

Recommended Posts

Bom dia pessoal,

 

 

Estou tendo problemas com duas funções que estou utilizando em um input.

Quando uso as funções "mascara(this,cpf) e validaCpf(document.formulario.edtCpf);" com a segunda sem o .value a mascara funciona.

Se utilizo o "mascara(this,cpf) e validaCpf(document.formulario.edtCpf.value);", a validação funciona e a mascara não.

 

 

function validaCpf(num) {

   //Feito Alteração em 29/05/2012 devido a Mascara do CPF - Éverton Leonardo
   num = num.replace(".", "");
   num = num.replace(".", "");
   num = num.replace("-", "");

var i
var j
var soma
var aux
var digito
cpf = num



if (num.length > 10){
			if (num.length != 11){
				alert('Número do CPF Inválido! - falta algum número')
				return false;
			}


		if (
			num == "00000000000" || 
			num == "11111111111" || 
			num == "22222222222" || 
			num == "33333333333" || 
			num == "44444444444" || 
			num == "55555555555" || 
			num == "66666666666" || 
			num == "77777777777" || 
			num == "88888888888" || 
			num == "99999999999"
		){
			alert('Número do CPF Inválido ! - repetição total de números')	
			document.formulario.edtCpf.focus();
			return false;
		}

		aux = num.substr(0, num.length-2);

		for (j=1; j<=2; j++){

			soma = 0;

			for (i=0; i<=aux.length-1; i++){
				soma = soma + (aux.substr(aux.length - 1 - i, 1) * (i + 2) * 10);
			}

			aux = aux + "01234567890".substr((soma % 11), 1);

		}

		if (aux != num){
			alert('O Número de CPF informado é Inválido')
			document.formulario.edtCpf.value = ""
			document.formulario.edtCpf.focus();
			return false;
		}

		if (aux == num){
			return true;
		}
}
}



  function mascara(o, f) {
       v_obj = o
       v_fun = f
       setTimeout("execmascara()", 1)
   }

   function execmascara() {
       v_obj.value = v_fun(v_obj.value)
   }

   function soNumeros(v) {
       return v.replace(/\D/g, "")
   }

   function cpf(v) {
       v = v.replace(/\D/g, "")                    //Remove tudo o que não é dígito
       v = v.replace(/(\d{3})(\d)/, "$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos
       v = v.replace(/(\d{3})(\d)/, "$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos
       //de novo (para o segundo bloco de números)
       v = v.replace(/(\d{3})(\d{1,2})$/, "$1-$2") //Coloca um hífen entre o terceiro e o quarto dígitos
       return v
   }

 

<td><input id="edtCpf" name="edtCpf" type="text" class="caixa" size="14" maxlength="14" value="<% Response.Write(stNrCpf) %>" onblur="mascara(this,cpf);" onkeypress="somenteNumeros(document.formulario.edtCpf);mascara(this,cpf);validaCpf(document.formulario.edtCpf.value); return SubmitEnter(this,event);" />

 

Valeu!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

chame a sua função validaCpf no evento onblur.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ficou certo, porém surgiu outro problema..

 

Ele faz uma outra validação caso o usuário tenha precionado o enter e nesse momento ele não valida o cpf, a não ser que o cara retire o cursor do input.

Como resolvo para ele validar depois dessa função com o enter?

 

//Carregar dados do formulário
   function SubmitEnter(campo,e) {

       var keycode;
       if (window.event) keycode = window.event.keyCode;
       else if (e) keycode = e.which;
       else return true;

       if (keycode == 13) {
           //campo.formulario.submit();
           var edtCpf = document.formulario.edtCpf.value;
           var hdnVlProduto = document.formulario.hdnVlProduto.value;
           var hdnTempoGarantia = document.formulario.hdnTempoGarantia.value;
           var hdnOrcamento = document.formulario.hdnOrcamento.value;
           var hdnId_Produto = document.formulario.hdnId_Produto.value;

           if (edtCpf != "") {
               $("#consulta").load('modulos/te_EnviaAjax.asp?edtCpf=' + edtCpf + '&stAcao=cpf' + '&garantia=' + hdnTempoGarantia + '&hdnVlProduto=' + hdnVlProduto + '&hdnOrcamento=' + hdnOrcamento + '&hdnId_Produto=' + hdnId_Produto);
               return false;
           }            
           return false;
       } else {
       return true;
       }

   }

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ai galera..

Já resolvi essa questão. chamei a função depois que valida o cpf quando ele precionar o enter

if (edtCpf != "") {

               if (validaCpf(edtCpf) == false) {
                   return false;
               } else {
                   $("#consulta").load('minha pagina');
                   //alert(edtCpf)
               }
               return false;
           }         

 

Resolvido!!

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.