Ir para conteúdo

POWERED BY:

Arquivado

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

ahsc

máscara, validação de datas, validação de cnpj e cpf

Recommended Posts

Olá a todos, após apanhar um pouco com máscaras e validações. Rsolvi postar aqui alguns códigos que pequei da net e adaptei às minhas necessidades e outros que criei.

 

Script .js para máscarar campos mascara.js

 

CODE
// JavaScript Document

function mascara(o,f){

v_obj=o

v_fun=f

setTimeout("execmascara()",1)

}

 

function execmascara(){

v_obj.value=v_fun(v_obj.value)

}

 

function leech(v){

v=v.replace(/o/gi,"0")

v=v.replace(/i/gi,"1")

v=v.replace(/z/gi,"2")

v=v.replace(/e/gi,"3")

v=v.replace(/a/gi,"4")

v=v.replace(/s/gi,"5")

v=v.replace(/t/gi,"7")

return v

}

 

function soNumeros(v){

return v.replace(/\D/g,"")

}

 

function telefone(v){

v=v.replace(/\D/g,"") //Remove tudo o que não é dígito

v=v.replace(/^(\d\d)(\d)/g,"($1) $2") //Coloca parênteses em volta dos dois primeiros dígitos

v=v.replace(/(\d{4})(\d)/,"$1-$2") //Coloca hífen entre o quarto e o quinto dígitos

return v

}

 

function data(v){

v=v.replace(/\D/g,"") //Remove tudo o que não é dígito

v=v.replace(/^(\d\d)(\d)/g,"$1/$2") //Coloca barra entre os dois primeiros dígitos

v=v.replace(/(\d{2})(\d)/,"$1/$2") //Coloca barra entre o quinto e o sexto dígitos

return v

}

 

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

}

 

function cep(v){

v=v.replace(/\D/g,"") //Remove tudo o que não é dígito

v=v.replace(/^(\d{5})(\d)/,"$1-$2") //Esse é tão fácil que não merece explicações

return v

}

 

function cnpj(v){

v=v.replace(/\D/g,"") //Remove tudo o que não é dígito

v=v.replace(/^(\d{2})(\d)/,"$1.$2") //Coloca ponto entre o segundo e o terceiro dígitos

v=v.replace(/^(\d{2})\.(\d{3})(\d)/,"$1.$2.$3") //Coloca ponto entre o quinto e o sexto dígitos

v=v.replace(/\.(\d{3})(\d)/,".$1/$2") //Coloca uma barra entre o oitavo e o nono dígitos

v=v.replace(/(\d{4})(\d)/,"$1-$2") //Coloca um hífen depois do bloco de quatro dígitos

return v

}

 

function romanos(v){

v=v.toUpperCase() //Maiúsculas

v=v.replace(/[^IVXLCDM]/g,"") //Remove tudo o que não for I, V, X, L, C, D ou M

//Essa é complicada! Copiei daqui: http://www.diveintopython.org/refactoring/refactoring.html

while(v.replace(/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,"")!="")

v=v.replace(/.$/,"")

return v

}

 

function site(v){

//Esse sem comentarios para que você entenda sozinho ;-)

v=v.replace(/^http:\/\/?/,"")

dominio=v

caminho=""

if(v.indexOf("/")>-1)

dominio=v.split("/")[0]

caminho=v.replace(/[^\/]*/,"")

dominio=dominio.replace(/[^\w\.\+-:@]/g,"")

caminho=caminho.replace(/[^\w\d\+-@:\?&=%\(\)\.]/g,"")

caminho=caminho.replace(/([\?&])=/,"$1")

if(caminho!="")dominio=dominio.replace(/\.+$/,"")

v="http://"+dominio+caminho

return v

}

 

 

Script para vaidação de cnpj e cpf validacao.js

 

CODE
// JavaScript Document

/* ********************************************************************

####################################################################

Assunto = Validação de CPF e CNPJ

Autor = Marcos Regis

Data = 24/01/2006

Versão = 1.0

Compatibilidade = Todos os navegadores.

Pode ser usado e distribuído desde que esta linhas sejam mantidas

====------------------------------------------------------------====

 

Funcionamento = O script recebe como parâmetro um objeto por isso

deve ser chamado da seguinte forma:

E.: no evento onBlur de um campo texto

<input name="cpf_cnpj" type="text" size="40" maxlength="18"

onBlur="validar(this);">

Ao deixar o campo o evento é disparado e chama validar() com o

argumento "this" que representa o próprio objeto com todas as

propriedades.

A partir daí a função validar() trata a entrada removendo tudo que

não for caracter numérico e deixando apenas números, portanto

valores escritos só com números ou com separadores como '.' ou mesmo

espaços são aceitos

ex.: 111222333/44, 111.222.333-44, 111 222 333 44 serão tratadoc como

11122233344 (para CPFs)

De certa forma até mesmo valores como 111A222B333C44 será aceito mas

aconselho a usar a função soNums() que encotra-se aqui mesmo para

que o campo só aceite caracteres numéricos.

Para usar a função soNums() chame-a no evento onKeyPress desta forma

onKeyPress="return soNums(event);"

Após limpar o valor verificamos seu tamanho que deve ser ou 11 ou 14

Se o tamanho não for aceito a função retorna false e [opcional]

mostra uma mensagem de erro.

Sugestões e comentários marcos_regis@hotmail.com

####################################################################

******************************************************************** */

 

// a função principal de validação

function validar(obj) { // recebe um objeto

var s = (obj.value).replace(/\D/g,'');

var tam=(s).length; // removendo os caracteres não numéricos

if (!(tam==11 || tam==14)){ // validando o tamanho

alert("'"+s+"' Não é um CPF ou um CNPJ válido!" ); // tamanho inválido

return false;

}

 

// se for CPF

if (tam==11 ){

if (!validaCPF(s)){ // chama a função que valida o CPF

alert("'"+s+"' Não é um CPF válido!" ); // se quiser mostrar o erro

obj.select(); // se quiser selecionar o campo em questão

return false;

}

obj.value=maskCPF(s); // se validou o CPF mascaramos corretamente

return true;

}

 

// se for CNPJ

if (tam==14){

if(!validaCNPJ(s)){ // chama a função que valida o CNPJ

alert("'"+s+"' Não é um CNPJ válido!" ); // se quiser mostrar o erro

obj.select(); // se quiser selecionar o campo enviado

return false;

}

obj.value=maskCNPJ(s); // se validou o CNPJ mascaramos corretamente

return true;

}

}

// fim da funcao validar()

 

// função que valida CPF

// O algorítimo de validação de CPF é baseado em cálculos

// para o dígito verificador (os dois últimos)

// Não entrarei em detalhes de como funciona

function validaCPF(s) {

var c = s.substr(0,9);

var dv = s.substr(9,2);

var d1 = 0;

for (var i=0; i<9; i++) {

d1 += c.charAt(i)*(10-i);

}

if (d1 == 0) return false;

d1 = 11 - (d1 % 11);

if (d1 > 9) d1 = 0;

if (dv.charAt(0) != d1){

return false;

}

d1 *= 2;

for (var i = 0; i < 9; i++) {

d1 += c.charAt(i)*(11-i);

}

d1 = 11 - (d1 % 11);

if (d1 > 9) d1 = 0;

if (dv.charAt(1) != d1){

return false;

}

return true;

}

 

// Função que valida CNPJ

// O algorítimo de validação de CNPJ é baseado em cálculos

// para o dígito verificador (os dois últimos)

// Não entrarei em detalhes de como funciona

function validaCNPJ(CNPJ) {

var a = new Array();

var b = new Number;

var c = [6,5,4,3,2,9,8,7,6,5,4,3,2];

for (i=0; i<12; i++){

a = CNPJ.charAt(i);

b += a * c[i+1];

}

if ((x = b % 11) < 2) { a[12] = 0 } else { a[12] = 11-x }

b = 0;

for (y=0; y<13; y++) {

b += (a[y] * c[y]);

}

if ((x = b % 11) < 2) { a[13] = 0; } else { a[13] = 11-x; }

if ((CNPJ.charAt(12) != a[12]) || (CNPJ.charAt(13) != a[13])){

return false;

}

return true;

}

 

 

// Função que permite apenas teclas numéricas

// Deve ser chamada no evento onKeyPress desta forma

// return (soNums(event));

function soNums(e)

{

if (document.all){var evt=event.keyCode;}

else{var evt = e.charCode;}

if (evt <20 || (evt >47 && evt<58)){return true;}

return false;

}

 

// função que mascara o CPF

function maskCPF(CPF){

return CPF.substring(0,3)+"."+CPF.substring(3,6)+"."+CPF.substring(6,9)+"-"+CPF.substring(9,11);

}

 

// função que mascara o CNPJ

function maskCNPJ(CNPJ){

return CNPJ.substring(0,2)+"."+CNPJ.substring(2,5)+"."+CNPJ.substring(5,8)+"/"+CNPJ.substring(8,12)+"-"+CNPJ.substring(12,14);

}

Camando a função no campo desejado.

 

CODE
<input id="icnpj" onkeypress="mascara(this,cnpj)" maxlength="18" class="input" name="cnpjPj" onblur="validar(this)"/>

onde o comando: onkeypress="mascara(this,cnpj)" habilita a máscara de cnpj e onblur="validar(this)" chama a função para validar o cnpj.

 

código para verificar se uma data é válida ou não. Inclui ano bisexto no caso a data vem com a formatação dd/mm/aaaa

 

CODE

 

$dataDoc=trim($_POST['dataDoc']);

$dia=substr($dataDoc,0,-8); // extraimos somete o dia

$mes=substr($dataDoc,3,-5); // extraimos somete o mes

$ano=substr($dataDoc,6); // extraimos somete o ano

 

 

if(!checkdate($mes,$dia,$ano))

{

echo "<script>alert('Dada do documento errada, verifique o erro.');";

echo "location.href='../lancaDocs.php'</script>";

exit;

}

é isso, espero que ajude.

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.