Código Javascript para Máscaras

Olá a todos!

O que vou publicar não é exatamente um tutorial, mas uma adaptação a um código Javascript que encontrei para máscaras de campos, e que espero ser útil a quem interessar.

Dias atrás precisei de um código para máscara no padrão ##º##’##”. Como não tinha muito tempo para criar um código de máscara, e por saber da existência de vários códigos do tipo na rede, preferi procurar algum código pronto que resolvesse o problema. O código qu encontrei no site http://javascript.internet.com/forms/dfilter.html funciona para todo tipo de máscara, e dentre todos os que pude testar foi o melhor. Precisei apenas fazer algumas adaptações para compatibilidade com o IE7, e para pegar a digitação de números no teclado numérico auxiliar.

// [dFilter] – A Numerical Input Mask for JavaScript
// Written By Dwayne Forehand – March 27th, 2003
// Please reuse & redistribute while keeping this notice.

var dFilterStep

function dFilterStrip (dFilterTemp, dFilterMask){

    dFilterMask = replace(dFilterMask,’#’,”);
    for (dFilterStep = 0; dFilterStep < dFilterMask.length++; dFilterStep++){         dFilterTemp = replace(dFilterTemp,dFilterMask.substring(dFilterStep,dFilterStep+1),”);     }     return dFilterTemp; } function dFilterMax (dFilterMask){     dFilterTemp = dFilterMask;     for (dFilterStep = 0; dFilterStep 47&&key95&&key<106)) && dFilterNum.length47&&key95&&key<106 ){             var aux = 0;             switch(key){                 case 96:                 aux = 48;                 break;                 case 97:                 aux = 49;                 break;                 case 98:                 aux = 50;                 break;                 case 99:                 aux = 51;                 break;                 case 100:                 aux = 52;                 break;                 case 101:                 aux = 53;                 break;                 case 102:                 aux = 54;                 break;                 case 103:                 aux = 55;                 break;                 case 104:                 aux = 56;                 break;                 case 105:                 aux = 57;                 break;             }             dFilterNum=dFilterNum+String.fromCharCode(aux);         }     }     var dFilterFinal=”;     for (dFilterStep = 0; dFilterStep < dFilterMask.length; dFilterStep++)     {         if (dFilterMask.charAt(dFilterStep)==’#')         {             if (dFilterNum.length!=0)             {                 dFilterFinal = dFilterFinal + dFilterNum.charAt(0);                 dFilterNum = dFilterNum.substring(1,dFilterNum.length);             }             else             {                 dFilterFinal = dFilterFinal + “”;             }         }         else if (dFilterMask.charAt(dFilterStep)!=’#')         {             dFilterFinal = dFilterFinal + dFilterMask.charAt(dFilterStep);         }         //dFilterTemp = replace(dFilterTemp,dFilterMask.substring(dFilterStep,dFilterStep+1),”);     }     textbox.value = dFilterFinal;     return false; } function replace(fullString,text,by) {     // Replaces text with by in string     var strLength = fullString.length, txtLength = text.length;     if ((strLength == 0) || (txtLength == 0))         return fullString;     var i = fullString.indexOf(text);     if ((!i) && (text != fullString.substring(0,txtLength)))         return fullString;     if (i == -1)         return fullString;     var newstr = fullString.substring(0,i) + by;     if (i+txtLength < strLength)         newstr += replace(fullString.substring(i+txtLength,strLength),text,by);     return newstr; } [/sourcecode] Para usar a máscara, basta declarar no evento onKeyDown do componente de entrada (input) o código javascript:return dFilter (event, this, "MASCARA") (onde MASCARA) é o padrão que se deseja. Há um exemplo de utilização no link do código original. Espero que seja útil. Abraços!

4 comentários sobre “Código Javascript para Máscaras

  1. É, talvez realmente seja uma merda para você. A mim ajudou, e postei com a intenção de ajudar a quem quer que seja.
    Me faça um favor (se você ainda voltar a este blog), poste um melhor para que eu possa elogiar sua contribuição!

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s