Verificando a consistência de CPF e CNPJ em um formulário com JavaScript
Esta é a continuação do artigo "Consistindo um formulário em Javascript". Neste vamos ver como consistir campos do tipo CPF e CNPJ.
Introdução
No artigo anterior (Consistindo um formulário com JavaScript)
vimos o uso das rotinas isEmpty(), isNumber() e isEmail().
Agora vamos explicar como consistir os campos de CPF e CNPJ de seu formulário.
Para realizar esta consistência vamos utilizar 2 scripts que encontram-se na área de script. São eles: Tanto o número de CPF quanto o CNPJ possuem um algorítimo de verificação que chamamos de Módulo 11 e gera os dois últimos algarismos que compõe um CPF e CNPJ. Isto ocorre apenas por uma medida de segurança, pois desta forma é possível verificar se um número realmente corresponde a um CPF ou um CNPJ.
Nossa rotina isCPFCNPJ verifica os dois tipos de documentos, ou seja se o usuário digitar um CPF ou um CNPJ no campo a rotina é capaz de selecionar o tipo de consistência e realizar o cálculo de Módulo 11 automaticamente. Mais uma vez reforço que a consistência em JavaScript não é aconselhada em casos onde a segurança deva ser rígida, recomendo utilizar este tipo de rotina em formulário de envio de e-mail ou então áreas administrativas de sites, onde o usuário já passou por um login e senha seguros ou então intranets.
Adicione a seguinte linha ao seu html:
Para realizar esta consistência vamos utilizar 2 scripts que encontram-se na área de script. São eles: Tanto o número de CPF quanto o CNPJ possuem um algorítimo de verificação que chamamos de Módulo 11 e gera os dois últimos algarismos que compõe um CPF e CNPJ. Isto ocorre apenas por uma medida de segurança, pois desta forma é possível verificar se um número realmente corresponde a um CPF ou um CNPJ.
Nossa rotina isCPFCNPJ verifica os dois tipos de documentos, ou seja se o usuário digitar um CPF ou um CNPJ no campo a rotina é capaz de selecionar o tipo de consistência e realizar o cálculo de Módulo 11 automaticamente. Mais uma vez reforço que a consistência em JavaScript não é aconselhada em casos onde a segurança deva ser rígida, recomendo utilizar este tipo de rotina em formulário de envio de e-mail ou então áreas administrativas de sites, onde o usuário já passou por um login e senha seguros ou então intranets.
Adicione a seguinte linha ao seu html:
<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript" SRC="isEmpty.js"></script>
<SCRIPT LANGUAGE="JavaScript" SRC="isCPFCNPJ.js"></script>
</HEAD>
<HEAD>
<SCRIPT LANGUAGE="JavaScript" SRC="isEmpty.js"></script>
<SCRIPT LANGUAGE="JavaScript" SRC="isCPFCNPJ.js"></script>
</HEAD>
Após adicionar estas linhas será possível acessar a função isCPFCNPJ(). Caso esteja usando outras rotinas JavaScript lembre-se de acrescentá-las dentro da TAG HEAD.
Agora vamos adicionar uma verificação de CPF e CNPJ:
<head>
<SCRIPT LANGUAGE="JavaScript">
function checkForm(){
if(!isCPFCNPJ(document.formTeste.cpfcnpj.value,0)){
alert("Por favor informe um CPF/CNPJ válido");
document.formTeste.cpfcnpj.focus();
return false;
}
return true;
}
</script>
</head>
<SCRIPT LANGUAGE="JavaScript">
function checkForm(){
if(!isCPFCNPJ(document.formTeste.cpfcnpj.value,0)){
alert("Por favor informe um CPF/CNPJ válido");
document.formTeste.cpfcnpj.focus();
return false;
}
return true;
}
</script>
</head>
Lembre-se que nossa rotina se chama isCPFCNPJ, ou seja, é CPF ou CNPJ então seu retorno é verdadeiro apenas quando for um número válido e neste caso como queremos verificar se ele é falso, então devemos acrescentar o operador !, que significa NOT e realiza a negação da expressão que vem após.
Caso você tenha um campo que deve receber apenas CPF ou CNPJ então sugiro que limite o número de caracteres na entrada de dados, ou seja, utilize o atributo MAXLENGTH no campo.
Para CPF:
<INPUT TYPE=TEXT SIZE=14 MAXLENGTH=14>
Para CNPJ:
<INPUT TYPE=TEXT SIZE=18 MAXLENGTH=18>
E utilize a função passando parâmetro 1 para CPF e 2 para CNPJ:
<head>
<SCRIPT LANGUAGE="JavaScript">
function checkForm(){
if(!isCPFCNPJ(document.formTeste.cpfcnpj.value,1)){
alert("Por favor informe um CPF válido");
document.formTeste.cpfcnpj.focus();
return false;
}
return true;
}
</script>
</head>
<SCRIPT LANGUAGE="JavaScript">
function checkForm(){
if(!isCPFCNPJ(document.formTeste.cpfcnpj.value,1)){
alert("Por favor informe um CPF válido");
document.formTeste.cpfcnpj.focus();
return false;
}
return true;
}
</script>
</head>
Fontes para consulta sobre JavaScript:
- http://www.scriptsearch.com
- http://www.hotscripts.com
- http://devedge.netscape.com/library/manuals/...
[]s
Celso Goya
moinho.net