Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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 Documentfunction 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](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.
Carregando comentários...