sexta-feira, 1 de outubro de 2010

Mascara Javascript - Moeda (Monetário)


Outro dia estava atrás de um script para mascara de moeda e não achava de forma alguma dai um amigo meu disponibilizo esse script o qual eu ainda não parei para fazer uma análise mas ele sempre funcionou perfeitamente.'

Até onde eu sei o Autor do script é Gabriel Fróes

<script language="javascript">
function MascaraMoeda(objTextBox, SeparadorMilesimo, SeparadorDecimal, e){
    var sep = 0;
    var key = "";
    var i = j = 0;
    var len = len2 = 0;
    var strCheck = '0123456789';
    var aux = aux2 = '';
    var whichCode = (window.Event) ? e.which : e.keyCode;
    if (whichCode == 13) return true;
    key = String.fromCharCode(whichCode); // Valor para o código da Chave
    if (strCheck.indexOf(key) == -1) return false; // Chave inválida
    len = objTextBox.value.length;
    for(i = 0; i < len; i++)
        if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal)) break;
    aux = '';
    for(; i < len; i++)
        if (strCheck.indexOf(objTextBox.value.charAt(i))!=-1) aux += objTextBox.value.charAt(i);
    aux += key;
    len = aux.length;
    if (len == 0) objTextBox.value = "";
    if (len == 1) objTextBox.value = "0"+ SeparadorDecimal + "0" + aux;
    if (len == 2) objTextBox.value = "0"+ SeparadorDecimal + aux;
    if (len > 2) {
        aux2 = "";
        for (j = 0, i = len - 3; i >= 0; i--) {
            if (j == 3) {
                aux2 += SeparadorMilesimo;
                j = 0;
            }
            aux2 += aux.charAt(i);
            j++;
        }
        objTextBox.value = "";
        len2 = aux2.length;
        for (i = len2 - 1; i >= 0; i--)
        objTextBox.value += aux2.charAt(i);
        objTextBox.value += SeparadorDecimal + aux.substr(len - 2, len);
    }
    return false;
}
</script>
<form>
Valor R$: <input type="text" name="valor"  onKeyPress="return(MascaraMoeda(this,'.',',',event))">
</form>

Veja o exemplo


Valor R$:

8 comentários:

Engenhoqueiro disse...

O backspace não funciona no firefox por que o codigo de tecla é outro
vc precisa trocar o
if (whichCode == 13) return true;
por
if (whichCode == 08) return true;
mas pra funcionar em ambos, faz
if ((whichCode == 13)||(whichCode == 08)) return true;

Anônimo disse...

Muito boa solução!...simples e eficaz.

Ernane.Net disse...

Mas não funciona no IE8

Diego Cipriano disse...

aqui funcionou no IEca8

keko disse...

Esse método funciona apenas no asp.net gostaria de saber se precisa fazer alguma modificação para funcionar no JavaScript, para não deixar sujeira no código ASP.

Diego Cipriano disse...

Amigo eu to usando java script para executar o código e não precisa de fazer nenhuma gambiarra para funcionar não apenas deve chamar ele por um evento no caso eu usei o onKeyPress="return(MascaraMoeda(this,'.',',',event))".

Anônimo disse...

Seria muito bom desse um jeito para funcionar no ie também..

Anônimo disse...

melhor post que encontrei sobre máscara monetária! parabéns

Postar um comentário

Related Posts with Thumbnails