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.
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:
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:
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.
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:
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).























#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 por Tiago - 9 de junho de 2009 em 00:32
Eai Brow, parabéns pelo blog!
#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 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 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 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 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 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 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 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 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 por Pedro Casado - 12 de novembro de 2009 em 16:41
Show!
#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 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!