Ir para conteúdo

POWERED BY:

Arquivado

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

Reginaldo

Mascara de valor monetario

Recommended Posts

ja pesquisei bastante mas não encontrei nada de forma clara... ta dificil...

 

pessoal eu tenho um form e la alguns campos de valor monetario onde eu digito os mesmos..

 

mas to tendo problemas com a sintaxe de digitação desses valores... por ex:

 

a sintaxe de um valor monetario é assim: 150.450,32 que corresponde á 150 mil 450 reais e 32 centavos ..

 

a casa de milhar é separada da casa de centena por ponto e os centavos por virgula...

 

mas ninguem tem saco pra fica digitando primeiro o ponto e depois a virgula pra fica certinho...

 

em sistemas comerciais é padronizada a virgula pra que se tenha maior facilidade... os operadores que sempre são muito preguisosos só querem apertar a tecla que ta mais proxima dos dedos.. essa é que é a grande verdade... (numeros, virgula e enter) um operador só quer saber disso... se você fala pra mocinha do caixa que ela vai ter que usar o ponto e a virgula ela te mata.. rsrs

 

então oque eu to precisando é uma funçãosinha em javascript que:

 

conforme o operador vai digitando o valor, essa função é chamada com o onKeyDown e vai verificando o numero de digitos e vai formatando com seus devidos pontos e virgulas... (teclas essas que devem ficar bloqueadas neste campo) para que o usuario não os coloque em lugar errado do numero....

 

igual no caixa eletronico de qualquer banco... você não tem tecla de ponto e nem de virgula... o valor é completado na tela conforme você vai digitando.... é assim que eu to precisando....

 

inclusive isso é norma da NBR pra caixas eletronicos.. afinal não se sabe o nivel de instrução do usuario.. pode ser até um analfabeto.. heheh

 

alguem tem algo que possa compartilhar pra me ajudar ?

 

fico muito grato desde já..

 

 

forte abraço.

 

FELIZ NATAL A TODOS... Á SUAS FAMILIAS TAMBEM...

 

UM EXCELENTE ANO NOVO CHEIO DE SAUDE, CONQUISTAS E MUITA PAZ E AMOR..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja se este script serve para você:

 

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

{

if(teclapres == null || teclapres == "undefined")

{

var tecla = -1;

}

else

{

var 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);

}

}

}

 

function maskKeyPress(objEvent)

{

var iKeyCode;

iKeyCode = objEvent.keyCode;

if(iKeyCode>=48 && iKeyCode<=57) return true;

return false;

}

</script>

 

 

e no formulario:

 

<INPUT TYPE="Text" NAME="texto" SIZE="10" MAXLENGTH="10" onKeydown="FormataMoeda(this,10,event)" onkeypress="return maskKeyPress(event)">

Compartilhar este post


Link para o post
Compartilhar em outros sites

o problema e que este tópico é de 2007 e deve ter mudado algo de lá para cá

Compartilhar este post


Link para o post
Compartilhar em outros sites

o problema e que este tópico é de 2007 e deve ter mudado algo de lá para cá

 

 

Segue o script modificado e funcionando no firefox.

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/xhtml1-strict.dtd">
<html>
<head>
	<title>XXX</title>
	<script type="text/javascript">
		
		function BlockKeybord()
		{
			if(window.event) // IE
			{
				if((event.keyCode < 48) || (event.keyCode > 57))
				{
					event.returnValue = false;
				}
			}
			else if(e.which) // Netscape/Firefox/Opera
			{
				if((event.which < 48) || (event.which > 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)
		{
			if(teclapres == null || teclapres == "undefined")
			{
				var tecla = -1;
			}
			else
			{
				var 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);
				}
			}
		}

		function maskKeyPress(objEvent)
		{
			var iKeyCode;
						
			if(window.event) // IE
			{
				iKeyCode = objEvent.keyCode;
				if(iKeyCode>=48 && iKeyCode<=57) return true;
				return false;
			}
			else if(e.which) // Netscape/Firefox/Opera
			{
				iKeyCode = objEvent.which;
				if(iKeyCode>=48 && iKeyCode<=57) return true;
				return false;
			}
			
			
		}
	</script>
</head>
<body>
<input type="Text" name="texto" size="10" maxlength="10" onkeydown="FormataMoeda(this,10,event)" onkeypress="return maskKeyPress(event)" />
</body>
</html>

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.