validacao de cnpj e cpf no JQuery

3,018 views
Skip to first unread message

PHP_MASTER

unread,
Nov 12, 2009, 12:20:46 PM11/12/09
to jQuery (Brasil)
po galera eu to quase jogando o pc pela janela, eu preciso validar cpf
e cnpj por jquery, eu consegui validar o cnpj mas so funciona no FF,
no interlixo bostaexplorer(vulgarmente conhecido como IE) nao funciona
nem a pau, se vcs puderem me dar uma luz, se sou berem o pq!!!!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://
www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Testando validate com novos módulos</title>

<script type="text/javascript" src="jquery-1.3.1.js"></script>
<script type="text/javascript" src="jquery.validate.js"></script>
<script type="text/javascript"
src="jquery.maskedinput-1.1.4.pack.js"></script>

<script type="text/javascript">
jQuery(function($){
$("#data_galeria").mask("99/99/9999");
$("#cep").mask("99999-999");
$("#cpf").mask("999.999.999/99");
$("#cnpj").mask("99.999.999/9999-99");
});
</script>


<script type="text/javascript">

jQuery.validator.addMethod("cnpj", function(cnpj, element) {
// DEIXA APENAS OS NÚMEROS
cnpj = cnpj.replace('/','');
cnpj = cnpj.replace('.','');
cnpj = cnpj.replace('.','');
cnpj = cnpj.replace('-','');

var numeros, digitos, soma, i, resultado, pos, tamanho,
digitos_iguais;
digitos_iguais = 1;

if (cnpj.length < 14 && cnpj.length < 15){
return false;
}
for (i = 0; i < cnpj.length - 1; i++){
if (cnpj.charAt(i) != cnpj.charAt(i + 1)){
digitos_iguais = 0;
break;
}
}

if (!digitos_iguais){
tamanho = cnpj.length - 2
numeros = cnpj.substring(0,tamanho);
digitos = cnpj.substring(tamanho);
soma = 0;
pos = tamanho - 7;

for (i = tamanho; i >= 1; i--){
soma += numeros.charAt(tamanho - i) * pos--;
if (pos < 2){
pos = 9;
}
}
resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
if (resultado != digitos.charAt(0)){
return false;
}
tamanho = tamanho + 1;
numeros = cnpj.substring(0,tamanho);
soma = 0;
pos = tamanho - 7;
for (i = tamanho; i >= 1; i--){
soma += numeros.charAt(tamanho - i) * pos--;
if (pos < 2){
pos = 9;
}
}
resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
if (resultado != digitos.charAt(1)){
return false;
}
return true;
}else{
return false;
}
}, "Informe um CNPJ válido."); // Mensagem padrão



// QUANDO O DOCUMENTO ESTIVER PRONTO
$(document).ready(function(){

// CONFIGURA A VALIDACAO DO FORMULARIO
$("#meuForm").validate({
rules: {
titulo: {required: true},
data_galeria: {required: true, dateBR: true},
cnpj: {cnpj: true}
},
messages: {
titulo: {required: 'Informe o titulo'},
data_galeria: {required: 'Informe a data', dateBR: 'Digite
uma data válida'},
cnpj: { cnpj: 'CNPJ inválido'}
}
,
});

$('#result').html('jQuery Validate com novos métodos: cpf, cnpj,
dateBR e dateTimeBR');
});

</script>

</head>

<body>

<div id="result"></div>

<form id="meuForm" action="aa.html">

<label>Título</label>
<input id="titulo" name="titulo" type="text" value="" /><br />

<label>Data</label>
<input id="data_galeria" name="data_galeria" type="text" value="" /
><br />

<label>CNPJ</label>
<input id="cnpj" name="cnpj" class="cnpj" type="text" value="" /
><br />

<input type="submit" value="Enviar" />

</form>

</body>
</html>

esse e o codigo

Tanure

unread,
Nov 12, 2009, 12:26:41 PM11/12/09
to jque...@googlegroups.com
coloca isso no jsbin que facilita muito te ajudar

PHP_MASTER

unread,
Nov 12, 2009, 12:37:26 PM11/12/09
to jQuery (Brasil)
po cara nunca usei o jsbin!!!

Tanure

unread,
Nov 12, 2009, 12:39:11 PM11/12/09
to jque...@googlegroups.com
criticando não!

dando a dica de como fica mais facil te ajudar

http://jsbin.com/

la vc ja inclui o jquery e testa, altera online..

tem a aba javascript, html e o resultado

PHP_MASTER

unread,
Nov 12, 2009, 12:40:37 PM11/12/09
to jQuery (Brasil)
eu nao estava falando que e uma critica so que nunca usei vou sar e
postar aki

Tanure

unread,
Nov 12, 2009, 12:41:43 PM11/12/09
to jque...@googlegroups.com
beleza!

fica a dica pro resto

PHP_MASTER

unread,
Nov 12, 2009, 12:48:41 PM11/12/09
to jQuery (Brasil)

Elaine Schraiber Trevisan

unread,
Nov 12, 2009, 1:05:04 PM11/12/09
to jque...@googlegroups.com
Olá!!
 
Provavelmente o validate que vc sta usando sta excluindo a validação do cpf e do cnpj ou nao tem verifca aí.
Eu fiz arquivos separados. Faça por partes. Crie um arquivo novo.js e coloque la dentro as functions coloque dentro da mesma pasta o validate.js Stou te enviando em anexo meu validate.js. e o maskinput.js (das mascaras)Chame os arquivos no <script> dentro do código e segue exemplo de como fazer as chamadas
 <td>CPF: </td>
 <td><input type="text" name="cpf" id="cpf" size="14" maxlength="14"></td>
 
Espero ter ajudado!




Veja quais são os assuntos do momento no Yahoo! + Buscados: Top 10 - Celebridades - Música - Esportes
jquery.validate.js

PHP_MASTER

unread,
Nov 12, 2009, 1:53:27 PM11/12/09
to jQuery (Brasil)
cara estava na pasta certa, mas mesmo assim troquei pelo seu + nao
adiantou!!!

Ruan Carlos

unread,
Nov 12, 2009, 2:38:27 PM11/12/09
to jque...@googlegroups.com
PHP_MASTER ela é uma mulher e não um cara ;)


Nada que um google + jquery + validar cpf

2009/11/12 PHP_MASTER <arc.c...@gmail.com>


cara estava na pasta certa, mas mesmo assim troquei pelo seu + nao
adiantou!!!




--
-----------------------------------------------------------------
Ruan Carlos
@ruanltbg
www.ruancarlos.com.br
Desenvolvedor web

Carlos Junior

unread,
Nov 12, 2009, 12:32:45 PM11/12/09
to jque...@googlegroups.com
Eu tenho jquery.validate.js  já com essas validações e
funciona normal pelo menos para cpf, o cnpj eu testo aqui
e te falo.


--
REVISTA PHP
WWW.REVISTAPHP.COM.BR
*************************************************************
LISTA PHP
http://groups.google.com.br/group/listaphp
*************************************************************
LISTA AJAX
http://groups.google.com.br/group/ajax-brasil
*************************************************************
LISTA PYTHON
http://groups.google.com.br/group/python-google

Reinaldo Junior

unread,
Nov 12, 2009, 4:23:56 PM11/12/09
to jque...@googlegroups.com
Temos o jquery validate aqui na aplicação da empresa e funfa pra cpf e cnpj



2009/11/12 Carlos Junior <free...@gmail.com>



--
* ♣Reinaldo Junior Krinski Freitas♣*

Elaine Schraiber Trevisan

unread,
Nov 12, 2009, 6:59:19 PM11/12/09
to jque...@googlegroups.com
Verifica como vc sta chamando no código, se sta correto o name e id.
Acho q os nomes stão diferentes.
 
[]ss

Alessandro - Temtag Soluções para Internet

unread,
Nov 12, 2009, 7:22:07 PM11/12/09
to jque...@googlegroups.com
PHP_MASTER, 

Experiência própria. Aconselho você validar isso com PHP + jQuery validate.

Use o remote: do validate chamando o php q valida e retorna pra vc. É dinâmico da mesma forma.

Segue exemplo:

JQUERY

$(function(){
/*mask*/
                $("#cpf").mask("999.999.999-99");
/* validate */
 var validator = $('#form').validate({
 rules:{
 
  cpf:{required:true,
 remote:"exe.experimente.php"
}
},
messages: {
cpf:{
required:"Digite o n�mero do CPF.",
  remote:"CPF inv�lido."
}
},
debug:true,
focusCleanup: false,
errorElement:"span",
success: function(element) { 
element.html("&nbsp;").addClass("valid");// por causa do ie
        },
submitHandler: function(form){form.submit();});
});

NO PHP

/* CPF */
if(isset($_GET['cpf']) && !empty($_GET['cpf'])){
//validaCPF
$valido = chama_sua_funcao_que_valida_CPF($_GET['cpf']);
if($valido == true){
echo 1; // cpf válido
}
else{
echo 0; // cpf invalido, retorna a mensagem CPF Inválido personalizada no remote: do validate
}
}
unset($return);
/* CPF */


2009/11/12 PHP_MASTER <arc.c...@gmail.com>



--
Alessandro Vieira
Webdesigner
www.temtag.com/blog
MSN: vieiral...@msn.com
Skype: vieiralessandro
Twitter: @temtag
gTalk: temtag
(17) 9102-8368


Edy

unread,
May 30, 2013, 2:58:22 PM5/30/13
to jque...@googlegroups.com
Muito bom em! Parabéns


--

 www.edyonil.com
 Desenvolvimento de sites, hotsites, blogs e intranets. - Salvador-BAHIA
 twitter: @edyonil
 Fone: (71)8615-9790

José Carlos Gonçalves da Costa

unread,
Jun 3, 2013, 9:23:32 AM6/3/13
to jque...@googlegroups.com
Opa! Show de bola.
Obrigado Caue.


--
--
Grupo de jQuery Brasil.
 
REGRAS: https://docs.google.com/document/d/1VfvTDmeHTSj-L5ouZJjQQ4OkjTCU1Hr2XtPYBNGVHH4/edit
 
USE O JSBIN.COM / JSFIDDLE.NET PARA CÓDIGOS.
 
Email: jque...@googlegroups.com
Biba: jquery-br+...@googlegroups.com
Site: http://groups.google.com/group/jquery-br?hl=pt-BR
 
---
Você está recebendo esta mensagem porque se inscreveu no grupo "jQuery (Brasil)" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para jquery-br+...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 



--
José Carlos Gonçalves da Costa.

João Paulo Alves Almeida

unread,
Jun 5, 2013, 9:28:58 AM6/5/13
to jque...@googlegroups.com
muito bom... fácil compreensão e manutenção...

JP

Willian Yamaura

unread,
Jun 5, 2013, 1:54:53 PM6/5/13
to jque...@googlegroups.com
Num validador desses da vida, vi 'desvalidando' o '111.111.111-11' , '222.222.222-22' até o '999.999.999-99'
... Sem falar no '123.456.789-09'... Eu sempre invalido esses...


2013/6/5 João Paulo Alves Almeida <jpalves...@gmail.com>



--
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
WILLIAN LUGO YAMAURA
(yam...@gmail.com)
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-



Giovanni Donda

unread,
Jun 5, 2013, 2:27:56 PM6/5/13
to jque...@googlegroups.com
tem mais um 000.000.001-91...rsrsrs...eu sempre uso este para testar...
e passa...hehehe

André Luis

unread,
Jun 5, 2013, 3:20:14 PM6/5/13
to jque...@googlegroups.com
Para invalidar sequências (11111111111,22222222222,etc) basta adicionar ao script:

cpf=cpf.replace(/[^\d]/g,''); //Transforma xxx.xxx.xxx-xx em somente números xxxxxxxxxxx if(cpf.match(/^(\d)\1+$/)) return false; //Checa se é repetido 1111..., 2222..., etc.

Alexandre Buffarah

unread,
Mar 12, 2015, 10:04:27 AM3/12/15
to jque...@googlegroups.com
Usando maskedinput


           $("#cnpj_cpf").mask("999.999.999-99?999",
           {
               completed: function () {
                   $("#cnpj_cpf").mask("99.999.999/9999-99");
               }
           });
Reply all
Reply to author
Forward
0 new messages