Mascarando campo input com o plugin meioMask.



Atendendo a pedidos dos leitores do blog, hoje vou apresentar um outro plugin para jQuery chamado meioMask, ele é um plugin para jQuery utilizado para mascarar campos input.

Com este plugin podemos mascarar campos do tipo: cpf, cnpj, data, moeda, etc… e ainda podemos criar nossas próprias máscaras de input com facilidade.

Atualmente o plugin está na versão 1.1-1 e sua documentação pode ser encontrada aqui .

Opa, vamos ver como funciona!

Primeiramente, para utilizar este plugin você deve incluir a biblioteca do jQuery e do meioMask:

<script src="jquery.js" type="text/javascript"></script>
<script src="jquery.meiomask.js" type="text/javascript"></script>

Atenção: Se você for trabalhar com caracteres especiais e o charset da sua página não for “utf-8″, é importante adicionar o atributo charset com valor “utf-8″ na chamada do plugin, assim:

<script src="jquery.meiomask.js" type="text/javascript" charset="utf-8"></script>

Mascarando um campo de telefone e um campo de cep.

Máscara de telefone e cep

Exemplo de código para mascarar telefone e cep.

$(document).ready(function() {
	$('input[name="campo_telefone"]').setMask('phone'); // telefone
	$('input[name="campo_cep"]').setMask('cep'); // cep
});

Mascarando campo de CPF e CNPJ:

Máscara de CPF e CNPJ


Exemplo de código para mascarar cpf e cnpj.

$(document).ready(function() {
	$('input[name="campo_cpf"]').setMask('cpf'); // cpf
	$('input[name="campo_cnpj"]').setMask('cnpj'); // cnpj
});

Mascarando campos de data:

Máscara de Data

Exemplo de código para mascarar data.

$(document).ready(function() {
	$('input[name="campo_data"]').setMask('date'); // data
});

Mascarando campos com números, como cartão de crédito, números inteiro, moeda, moeda com valor negativo.

Máscaras de Números






Exemplo de código para mascarar números como cartão de crédito, números inteiros, moedas e moeda com valor negativo.

$(document).ready(function() {
	$('input[name="campo_cc"]').setMask('cc'); // cartão de crédito
	$('input[name="campo_numero"]').setMask('integer'); // números inteiros
	$('input[name="campo_money"]').setMask('decimal'); // dinheiro
	$('input[name="campo_money_negativo"]').setMask('signed-decimal'); // dinheiro com valores negativos
});

Não achou a máscara que precisava?

Também podemos criar nossas próprias mascaras, conforme nossa necessidade.

Vamos súpor que temos que cadastrar algumas informações de um veículo e não temos definido no plugin uma máscara para o ano e para a placa do veículo, então o jeito é criar uma.

Agora vamos ver como criar uma máscara com 4 digítos para o ano e uma outra máscara com três letras maiúsculas mais quatro números para formar uma placa de veículo:

Máscaras criadas




Exemplo para criar máscaras para ano e placa de carro.

$(document).ready(function() {
	$('input[name="campo_ano"]').setMask('9999'); // ano do veículo
	$('input[name="campo_placa"]').setMask('ZZZ-9999'); // placa do veículo
});

No exemplo acima criamos as mascaras conforme nossa necessidade, repare que na máscara da placa utilizei ‘ZZZ-9999′, o ‘Z’ indica que quero somente letras maiúsculas e o ‘9′ que quero somente números.

Saíba que você pode adaptar para suas necessidades e para criar suas próprias máscaras tem que conhecer algumas regras do plugin, vou apresentá-las abaixo:

Segue uma tabela com as possibilidades:

z a à z
Z A à Z
a (a à z) e (A à Z)
* (0 à 9), (a à z) e (A à Z)
@ (0 à 9), (a à z), (A à Z) e (çÇáàãéèíìóòõúùü)
1 0 à 1
2 0 à 1
3 0 à 3
4 0 à 4
5 0 à 5
6 0 à 6
7 0 à 7
8 0 à 8
9 0 à 9

Compatibilidade do meioMask

O plugin meioMask foi testado com jQuery 1.2.6 e 1.3.x em todos os principais navegadores:

  • Firefox (Win, Mac, Linux);
  • IE6, IE7, IE8Beta2 (Win);
  • Chrome (Win);
  • Safari (Win, Mac, iPhone, sim, ele suporta iPhone!);
  • Opera (Win, Mac).

Baixar meioMask 1.1.1

Compare preços de livros jQuery.

,

  1. #1 por Matheus - 8 de junho de 2009 em 21:34

    ai Danilo ótimo post, sei que irá ajudar muita gente assim como eu. Abraços e tô sempre na área ai. Abraços!

  2. #2 por Tiago - 9 de junho de 2009 em 00:32

    Eai Brow, parabéns pelo blog!

  3. #3 por Fábio M. Costa - 9 de junho de 2009 em 10:27

    Olá Danilo. Muito completo o seu post, parabéns!
    Gostaria apenas de dar uma dica quanto à máscara de placa. Se eu fosse criar esse tipo de máscara eu colocaria para que a máscara aceitasse qualquer letra (a-zA-Z) e no css do campo eu colocaria “text-transform: uppercase” assim o usu’ario ode digitar letras minúsculas ou maiúsculas e vai funcionar da mesma forma.
    Abraço e parabéns mais uma vez.

  4. #4 por admin - 9 de junho de 2009 em 10:52

    Legal, logo que tiver um time aqui já faço a alteração.
    Valeu e teu plugin ficou bem legal!!

  5. #5 por Leandro - 18 de junho de 2009 em 21:18

    Estou utilizando o meioMask e acho ele ótimo.
    Só estou incomodado com uma incompatibilidade no Firefox, estou tentando arrumar mas ainda não consegui, se alguém tiver um luz … por favor !!!

    No link abaixo existe uma discução sobre isso:
    http://groups.google.com/group/javasf/browse_thread/thread/99ff83d7c3f0f8f9

    Testei várias vezes e com certeza não é problema com java/richfaces/a4j … o problema só ocorre no firefox …

    Se alguém tiver uma solução .. por favor .. postem aí …

  6. #6 por Charles Lins - 23 de junho de 2009 em 14:50

    Danilo, virei seu fã…hehehehehehe
    Seus post são claros, objetivos e tem o que falta em muitos por aí: exemplo na própria página.
    Muitas vezes a turma posta códigos, mas não sabemos como ficará e muitas vezes perdemos tempo por não ser o que esperávamos.
    Parabéns

  7. #7 por Chris Benseler - 24 de junho de 2009 em 09:42

    Aparentemente bem melhor do que o MaskedInput, que utilizei num projeto…
    Vou testar! []s!

  8. #8 por Francisco - 1 de julho de 2009 em 18:15

    Não consegui criar minha própria máscara, veja preciso de um campo com 6 casas decimais e 3 antes da vírgula, criei no .js essa entrada:
    ‘quilo_pedagio’ : { mask : ‘999.999999′, type : ‘reverse’, defaultValue : ‘000000′ }

    Não funcionou, preciso que o campo apareça assim:
    0,000000

    O que faço?

  9. #9 por Danilo - 2 de julho de 2009 em 00:13

    Francisco, creio que dessa forma funcione:
    $(’input[name="quilo_pedagio"]‘).setMask({ mask : ‘999999,999′, type : ‘reverse’, defaultValue : ‘0000000′ });

    Depois posta ae pra gente saber se deu certo!

  10. #10 por Francisco - 2 de julho de 2009 em 07:16

    Perfeito Danilo, funcionou sim, apenas meu código está diferente porque estou inserindo em um xhtml do Facelets + Richfaces.

    Afinal, o que são esses valores do parâmetro ‘type’?

    //

  11. #11 por Francisco - 2 de julho de 2009 em 07:17

    Meu código ficou assim:
    jQuery(document).ready(function() {
    var selector = “#formValoresAliquotas\\:valorPedagioQuilo”;
    try {
    selector = eval(”#formValoresAliquotas\\:valorPedagioQuilo”);
    } catch (e) {}
    jQuery(selector).setMask({mask : ‘999999,999′, type : ‘reverse’, defaultValue : ‘0000000′});
    })

  12. #12 por Pedro Casado - 12 de novembro de 2009 em 16:41

    Show!

  13. #13 por cristhian - 25 de novembro de 2009 em 17:15

    gente nao to conseguindo fazer funcionar esse script alguem pode me ajudar sou novo em programar, to com uma pagina em php , e o formulario tem um campo que eu quero que fique com duas casas decimais ( moeda) sei que tem que colocar as bibliotecas no head da minha pagina + o restante ponho aonde

  14. #14 por Danilo - 25 de novembro de 2009 em 21:05

    Christhian,
    No head da sua página após setar a lbrary do jquery e do meiomask, nessa ordem, em baixo vc deve inserir o código:

    <script type="text/javascript">
    $(document).ready(function() {
    	$('input[name="nomedocampo"]').setMask('decimal'); // dinheiro
    });
    </script>

    obs.: no name ali no input vc deve colocar o name do campo que vc quer formatar.

    se não der certo posta ae….
    abraço!

(não será publicado)
  1. Sem citações ainda.