Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

andreia_sp

Formata moeda

Recommended Posts

Passa para formato moeda, a medida que vai digitando o valor

 

<script language="Javascript">
function BlockKeybord()
{
	if((event.keyCode < 48) || (event.keyCode > 57))
	{
		event.returnValue = false;
	}
}

function troca(str,strsai,strentra)
{

	while(str.indexOf(strsai)>-1)
	{
		str = str.replace(strsai,strentra);
	}
	return str;
}

function FormataMoeda(campo,tammax,teclapres,caracter)
{
var tecla;
	if(teclapres == null || teclapres == "undefined")
		tecla = -1;
	else
		tecla = teclapres.keyCode;

	if(caracter == null || caracter == "undefined")
		caracter = ".";

vr = campo.value;

	if(caracter != "")
	{
		vr = troca(vr,caracter,"");
	}
	vr = troca(vr,"/","");
	vr = troca(vr,",","");
	vr = troca(vr,".","");

tam = vr.length;

	if(tecla > 0)
	{
		if(tam < tammax && tecla != 8)
		{
			tam = vr.length + 1;
		}
		if(tecla == 8)
		{
			tam = tam - 1;
		}
	}
	if(tecla == -1 || tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105)
	{
		if(tam <= 2)
		{ 
			campo.value = vr;
		}
		if((tam > 2) && (tam <= 5))
		{
			campo.value = vr.substr(0, tam - 2) + ',' + vr.substr(tam - 2, tam);
		}
		if((tam >= 6) && (tam <= 8))
		{
			campo.value = vr.substr(0, tam - 5) + caracter + vr.substr(tam - 5, 3) + ',' + vr.substr(tam - 2, tam);
		}
		if((tam >= 9) && (tam <= 11))
		{
			campo.value = vr.substr(0, tam - 8) + caracter + vr.substr(tam - 8, 3) + caracter + vr.substr(tam - 5, 3) + ',' + vr.substr(tam - 2, tam);
		}
		if((tam >= 12) && (tam <= 14))
		{
			campo.value = vr.substr(0, tam - 11) + caracter + vr.substr(tam - 11, 3) + caracter + vr.substr(tam - 8, 3) + caracter + vr.substr(tam - 5, 3) + ',' + vr.substr(tam - 2, tam);
		}
		if((tam >= 15) && (tam <= 17))
		{
			campo.value = vr.substr(0, tam - 14) + caracter + vr.substr(tam - 14, 3) + caracter + vr.substr(tam - 11, 3) + caracter + vr.substr(tam - 8, 3) + caracter + vr.substr(tam - 5, 3) + ',' + vr.substr(tam - 2, tam);
		}
	}
}
</script>

<input type="text" name="campo" maxlength="9" onkeydown="FormataMoeda(this,'9')">

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente, talvez seja para funcionar assim, mas acredito que não.

  • você pode digitar letras (ao meu ver isto é errado xD )
  • a medida que digitamos a casa de centavos fica com 3 digitos assim: 000,123, isto está errado né? Ao digitar 4 numeros ele fica assim: 1,234 se digitar 5: 123,45, se eu aperto o Ctrl ele corrigo (provalvemente qualquer outra tecla que eu apertar que não seja ordinal tambem vai ter o efeito do Ctrl).

Testei no FF3.5 Chrome3, IE6 ;)

Espero ter ajudado, talvez um Keyup só para atualizar o valor seria legal né?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.