Ir para conteúdo

POWERED BY:

Arquivado

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

dedindol

Jquery - Validação de CPF com máscara

Recommended Posts

Olá Senhores,

se não for o lugar certo me disculpem,

 

bom, tenho um formulário de cadastro, o qual estou validando com os plugins do jquery.

 

coloquei a mascara e a validação de cpf (os códigos colocarei no final do post), a mascara é aquela que já fica os pontos e o traço no imput (999.999.999-99) os numeros 9 não aparecem.

 

O problema é o seguinte...

 

Quando eu digito um cpf inválido aparece a mensagem de cpf inválido e quando eu apago para digitar um correto, fica levando o cursor do mouse para o final do input, ou seja, não consigo digitar.

 

Acredito qeu o problema seja por que a verificação está sendo feita durante a digitação e por isso, cada numero qeu eu digito, o cursor vai pro final do input.

 

como eu faço para fazer essa verificação ser feita só quando eu tirar o mouse do input ou entao só na confirmação do cadastro, assim o cursor para de ir pro final do input e bloquear a digitação.

 

Segue os códigos abaixo:

 

Validação do CPF

// Função de validação de CPF
	jQuery.validator.addMethod("verificaCPF", function(value, element) {
		value = value.replace('.','');
		value = value.replace('.','');
		cpf = value.replace('-','');
		while(cpf.length < 11) cpf = "0"+ cpf;
		var expReg = /^0+$|^1+$|^2+$|^3+$|^4+$|^5+$|^6+$|^7+$|^8+$|^9+$/;
		var a = [];
		var b = new Number;
		var c = 11;
		for (i=0; i<11; i++){
			a[i] = cpf.charAt(i);
			if (i < 9) b += (a[i] * --c);
		}
		if ((x = b % 11) < 2) { a[9] = 0 } else { a[9] = 11-x }
		b = 0;
		c = 11;
		for (y=0; y<10; y++) b += (a[y] * c--);
		if ((x = b % 11) < 2) { a[10] = 0; } else { a[10] = 11-x; }
		if ((cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10]) || cpf.match(expReg)) return false;
		return true;
	}, "CPF inválido."); // Mensagem padrão

 

E na página do formulário eu chamo a função e listo as mensagens de erro:

$("#cadastro").validate({  

// Define as regras *************************************

rules:{  

cpf:{  
// campoMensagem será obrigatório (required)  
required: true, verificaCPF: true 
},
},  
// Define as mensagens de erro para cada regra ************************************* 
messages:{
cpf:{  
required: "<br /><div style='color:#ff0000;'>Digite seu CPF</div>",  
verificaCPF: "<br /><div style='color:#ff0000;'>CPF inválido</div>"
},

 

Agradeço antecipadamente,

 

Diego Emidio

Compartilhar este post


Link para o post
Compartilhar em outros sites

a é, a mascara é essa aqui:

 

jQuery('#cpf').mask('999.999.999-99');

 

mas acho que ela nao tem nada a ver com o problema, pois sem a validação ela funciona normal.

 

Valeu

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.