Adicionar aos Favoritos | W3C

Escolha uma linguagem: Português | Inglês

bem-vindo!

Trabalho

8 de novembro, 2009

Uma dúvida na hora de criar um sistema de cadastro, é como criar uma máscara para quando o usuário insirir o CPF, CNPJ, CEP ou data, seja formatado em tempo real. Neste tutorial mostrarei como desenvolver em JavaScript uma máscara para CPF.

Então vamos lá! Primeiramente crie uma página html (ex: “teste.html”) e preencha com os seguintes códigos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="pt-BR">
    <head>
        <title>Teste mascara javascript CPF</title>
        <script src="mascaraCPF.js" type="text/javascript"></script>
    </head>

    <body>
        <form>
            <p>
                <label>CPF:</label>
                <input type="text" name="cpf" maxlength="14" onkeyup="formataCPF(this, event)" />
            </p>
        </form>
    </body>
</html>

CPF: (resultado parcial)

Neste código HTML, vemos a linha “<script src=”mascaraCPF.js” type=”text/javascript”></script>” responsável por importar o arquivo “mascaraCPF.js” que irá modelar o campo CPF.

Também vemos a linha “<input type=”text” name=”cpf” maxlength=”14″ onkeyup=”FormataCPF(this, event)” />” que nada mais é do que o campo que será inserido o CPF, limitado a 14 caracteres (11 números, mais 2 pontos e hífen).

Atenção para a função “onkeyup=”FormataCPF(this, event)”, o objetivo dela é fazer com que seja automaticamente invocado a funçao “FormataCPF(this, event)” na entrada de algum digito, enviando assim o dígito inserido e o valor decimal dele. Essa função se encontra no arquivo “mascaraCPF.js”.

Agora vamos a segunda parte: Crie um arquivo com nome “mascaraCPF.js” na mesma pasta do “teste.html” e adicione o seguinte código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
function formataCPF(campo, key){

    //Pego a tecla pressionada
    var tecla = key.keyCode ? key.keyCode : key.which ? key.which : key.charCode;
    var cpf = campo.value;

    //Removo tudo que nao seja numero
    var patt1 = /[0-9]/g; cpf = cpf.match(patt1);
    var tamanho = 0;

    if(cpf!= null){
        //Transformo o array em string
        var n_cpf = "";
        for(var i=0; i<=(cpf.length-1); i++){
            n_cpf += cpf[i];
        }
        cpf = n_cpf; //Pego a quantidade de numeros ja inseridos
        tamanho = cpf.length;
    }else{
        campo.value = "";
    }
    if(tamanho <= 3){
        campo.value = cpf;
    }

    //Adiciono pontos e traco no CPF
    if(tecla != 8 && tamanho &gt;=3 && tecla != 36 && tecla != 37 && tecla != 39 && tecla != 127){
        if (tamanho < 6){
            campo.value = cpf.substr(0, 3) + '.' + cpf.substr(3, tamanho-3);
        }
        if (tamanho >= 6 &amp;&amp; tamanho < 9){
            campo.value = cpf.substr(0, 3) + '.' + cpf.substr(3, 3) + '.' + cpf.substr(6, tamanho-6);
        }
        if (tamanho >= 9){
            campo.value = cpf.substr(0, 3) + '.' + cpf.substr(3, 3) + '.' + cpf.substr(6, 3) + '-' + cpf.substr(9, tamanho-9);
        }
    }
}

CPF: (resultado final)

Agora abra o “teste.html” no seu browser (não foi testado no chrome) e veja o funcionamento.
Testado no IpodTouch e funcionando com keycode 127 no backspace.

Simples e protegido, ao entrar com um digito, é armazenado na variavel “tecla” o código do digito, e é armazenado na variavel “cpf” o digito. Logo depois é removido todos caracteres que não sejam números, e concatenado os itens do array transformando-os em uma única String. Utilizando a quantidade de caracteres já inserido, executo condições para formatar o campo do CPF.

Obs (para usuários de WP): wordpress não aceita javascript direto no post, pois ele converte alguns caracteres para codificação html, é necessario importar em “.js” inserindo como mídia.

2 Comentários »

  1. boaaaa

    Comment por felipe — 8 de novembro de 2009 » 2:01

  2. Really good work about this website was done. Keep trying more – thanks!

    Comment por Yahoouj — 22 de fevereiro de 2010 » 22:39

Feed RSS dos comentários deste post URL de TrackBack

Deixe um comentário




Alguns trabalhos

Trabalho
  • Sala criada no 3D Studio Max.
  • Ambiente criado no 3D Studio Max.
  • Portal LEIAJA.COM sobre a região Norte Fluminense, com foco em Campos dos Goytacazes. Foi desenvolvido em PHP no ano de 2007.
  • Apresentação sobre cardiologia desenvolvido para o Dr. Cesar Ronald, mostrando os sinais elétricos no coração de maneira interativa. Este programa foi criado no Flash.
  • Panfleto desenvolvido para uma empresa de beleza. Foi criado no Fireworks.
  • Re-desenho com sombreado, 2002.
  • Re-desenho maximizado, 2002.
  • Nebulosa criada no photoshop, 2009.
  • Gráfico utilizando Flash + XML, 2005
  • Site para IMBABOL
  • Site para CONSTRUSAN
  • Site da T&T Automação

Popular Tags

Trabalho


Social e afins

Trabalho
Twitter RSS Orkut Contato Google Wave Atom

Publicidade

linha

Twitter | @paulosnm

linha
Copyright © 2009 Paulo de Souza - Contato
Valid XHTML 1.0 Strict Valid CSS level 2.1