Ir para conteúdo

Featured Replies

Postado

Fala, Galera

Procurei pelo Google uma forma de validar o campo de CPF ou CNPJ no momento do registro no WHMCS, mas não encontrei um que estivesse funcionando e fosse gratuito. Então com meus conhecimentos de front-end, adaptei uns javascript que encontrei pela internet para minha necessidade.

Eu havia caído em várias pesquisas neste tópico aqui: 

Mas a solução proposta não funcionou, pelo menos não comigo. Então estou colocando o que fiz pra quem precisar :)

1. Arquivo javascript de validação e formatação de CPF e CNPJ valida_cpf_cnpj.js

Upa no diretório que você quiser.

2. Edita o header.tpl - adicione onde quiser antes do fechamento da tag header

{if $filename eq 'register'}
    <script src="js/valida_cpf_cnpj.js"></script>
    {literal}
    <script>
	$(function(){
		// Aciona a validação e formatação ao sair do input
		$('#customfield1').blur(function(){ // aqui você deve colocar o ID gerado pelo campo personalizado no WHMCS
		
			var cpf_cnpj = $(this).val();
			
			// Testa a validação e formata se estiver OK
			if ( formata_cpf_cnpj( cpf_cnpj ) ) {
				$(this).val( formata_cpf_cnpj( cpf_cnpj ) );
				$('p.invalido').remove(); // remove o aviso de inválido se existir
			} else {
				$(this).val("");
				
				if ($('p.invalido').length > 0) { 
					
				} else {
					$(this).after( "<p class='invalido' style='color:red;'>CPF ou CNPJ inválido.</p>" ); // adiciona o aviso de inválido se não já existir logo abaixo do campo
				}
			}
			
		});
	 
	});
    </script> 
    
    <script> //permite apenas números no campo CPF ou CNPJ
		$(document).ready(function(){
 
			function onlyNumber(fields){
			$(fields).unbind('keyup').bind('keyup',function(e){ 
 
				var thisVal = $(this).val(); 
				var tempVal = "";
 
				for(var i = 0; i<thisVal.length; i++){
					if(RegExp(/^[0-9]$/).test(thisVal.charAt(i))){ 
						tempVal += thisVal.charAt(i); 
 
						if(e.keyCode == 8){
							tempVal = thisVal.substr(0,i);
						}						
					}
				}			
				$(this).val(tempVal);
			});
		}
 
		onlyNumber($('#customfield1')); //aqui adicione o ID gerado pelo campo do WHMCS
 
		});
 
        </script>
    {/literal}
{/if}

3. O que faz?

Toda vez que o campo é acionado, só será permitido digitar números. Digitando letras, as letras serão excluídas logo em seguida.
Após o input perder o foco, o javascript irá validar o número digitado e formatá-lo conforme for CPF ou CNPJ.
Se o CPF ou CNPJ estiver incorreto, ele elimina o conteúdo digitado (para que não seja possível enviar o formulário - o campo tem que está marcado como obrigatório no whmcs) e adiciona uma tag p com aviso de CPF e CNPJ incorreto.
Ao adicionar um número válido, a tag p com o aviso é eliminada e o campo é formatado.

Fontes dos Scripts bases que utilizei

http://www.gilcezar.eti.br/blog/permitir-apenas-digitacao-de-numeros-no-campo-com-jquery/

http://api.jquery.com/after/

http://api.jquery.com/length/

https://api.jquery.com/remove/

https://www.todoespacoonline.com/w/2014/11/como-validar-cpf-e-cnpj-com-javascript-ou-jquery/

PS:

Não sou nem de longe especialista em WHMCS, meu caminho neste mundo começou há pouco tempo. Embora já tenha tentado vender hospedagem desde de 2010 (ahh se eu tivesse a cabeça que eu tenho hoje naquela época rs)
Então, sintam-se a vontade para melhorar o código e partilhar novamente aqui com o pessoal :)



Postado
  • Autor

Fala msaulohenrique,

Não havia encontrado o seu, se tivesse achado não teria me dado o trabalho de fazer outro kkkkk. Acho que não tá indexado no google ainda (infelizmente esqueci de pesquisar aqui direto). Mas enfim, só soma pra ir ajudando o pessoal :)



Postado

Aqui não funcionou, coloquei o cpf errado e ainda com pontos e criou a conta perfeitamente mesmo com o cpf errado.

 


Postado
50 minutos atrás, Breno Febronio disse:

Aqui não funcionou, coloquei o cpf errado e ainda com pontos e criou a conta perfeitamente mesmo com o cpf errado.

 

O caminho do script (2a linha) está apontando para o lugar onde você upou o arquivo?



Postado
23 minutos atrás, Breno Febronio disse:

@leandrofiore Está sim.

Qual a posição do bloco? Colocou antes de fechar a </head>?



Postado
  • Autor

@Breno Febronio posta aqui o link do seu register.php para que possamos te ajudar.

Você lembrou de alterar o ID no jquery da linha 7 para o ID do seu campo?


Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.
Nota: Sua postagem exigirá aprovação do moderador antes de ficar visível.

Visitante
Infelizmente, seu conteúdo contém termos que não são permitimos. Edite seu conteúdo para remover as palavras destacadas abaixo.
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Informação Importante

Concorda com os nossos termos?