Array
(
)

Como implementar entada de Valores Monetários com Virgula

Sluisrj
   - 30 mar 2008

Pessoal

Alguém sabe como faço para implementar uma mascara ou uma função para entrada de valores decimais em reais nos campos Edit?

já consegui fazer isto via PHP após a digitação do campo através da função Number_format, agora preciso fazer isto em tempo de digitação dos valores, de modo que a medida que eu for digitando os valores, a virgula e o ponto como separadores de milhares vá aparecendo.


Webmoura
   - 18 abr 2008

Boa Tarde

tente este codigo, eu fiz e esta funcionando bem em minhas aplicacoes vc deve colocar no evento Javascript JSKeyDown do edit

document.onkeydown = Moedacode

function Moedacode(e)
{
var keycode;
var sep = 0;
var key =´´;
var i = j = 0;
var len = len2 = 0;
var strCheck = ´0123456789´;
var aux = aux2 = aux3 = ´´;
var SeparadorMilesimo = ´´;
var SeparadorDecimal=´´;
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
switch(keycode)
{
case 96:
key=´0´;
break;
case 97:
key=´1´;
break;
case 98:
key=´2´;
break;
case 99:
key=´3´;
break;
case 100:
key=´4´;
break;
case 101:
key=´5´;
break;
case 102:
key=´6´;
break;
case 103:
key=´7´;
break;
case 104:
key=´8´;
break;
case 105:
key=´9´;
break;
case 106:
key=´*´;
break;
case 107:
key=´+´;
break;
case 109:
key=´-´;
break;
case 110:
key=´.´;
break;
case 111:
key=´/´;
break;
default:
key = String.fromCharCode(keycode); // Valor para o código da Chave
}
// 13=enter, 8=backspace as demais retornam 0(zero)
// keycode==0 faz com que seja possivel usar todas as teclas como del, setas, etc
if ((keycode == 13) || (keycode == 0) || (keycode == 8))
{
return (true);
}
else
{
if (strCheck.indexOf(key) == -1)
{
// Chave inválida
//key=´´;
document.getElementById(´e_descricao´).value+=key;
}
else
{
document.getElementById(´e_descricao´).value+=key;
len = document.getElementById(´e_descricao´).value.length;
aux=´´;
for(i = 0; i < len; i++) //>
{
aux += document.getElementById(´e_descricao´).value.charAt(i);
}
if (len == 1)
{
document.getElementById(´e_descricao´).value = ´0´+ SeparadorDecimal + ´0´ + aux;
}
else
{
if (len > 2)
{
aux2 = ´´;
for (i = 0; i < len; i++)//>
{
if (aux.charAt(i)==SeparadorDecimal)
{
i++;
aux2 += aux.charAt(i);
aux2 += SeparadorDecimal;
}
else
{
aux2 += aux.charAt(i);
}
}
//executar o teste de char0 2x devido aos 2 zeros acrescentados acima
aux3=aux2; //igualar para quando não for 0 no char0
if ((aux2.charAt(0)==´0´) && (aux2.charAt(1)!=SeparadorDecimal))
{
aux3 = aux2.substr(1, len);
}
aux2=aux3;//iguala e executa de novo para eliminar zeros a esquerda
if ((aux2.charAt(0)==´0´) && (aux2.charAt(1)!=SeparadorDecimal))
{
aux3 = aux2.substr(1, len);
}
aux2=aux3;
document.getElementById(´e_descricao´).value = aux2;
}// fim do if (len > 2)
}//fim do else do if (len == 1)
}// fim do else do if (strCheck.indexOf(key) == -1)
} //fim do else do if ((keycode == 13) || (keycode == 0) || (keycode == 8))
}
return (false);

copia ele inteiro ok
espero ter ajudado
Webmoura


Jpdo
   - 21 abr 2008

funciona valeu