Ir para conteúdo

POWERED BY:

Arquivado

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

ODIR

formatar moeda no evento onfocus

Recommended Posts

beleza galera estou com uma duvida simples gostaria de formatar um campo para moeda so que no evento onfocus o meu esta da seguinte maneiraonFocus="nextfield ='icms1'; total1.value = quant1.value * valor1.value"qual seria a maneira correta, tem que ser no onfocus pois neste campo nao ha mais digitação do usuario]valeu galera

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite amigo.

 

Pra ficar mais fácil e organizado, crie uma função e chame-a no evento onFocus, assim:

 

function calculaMoeda(){	objQuant = document.getElementById('quant1');	objTotal1 = document.getElementById('total1');	nextfield ='icms1'; 	objTotal1.value = objQuant.value * objQuant.value;}<input ... onFocus="calculaMoeda()">
Veja se é isso que você quer.

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

neste caso ele so faz o calculo dai por exemplo campo1 = 10 campo2 = 10,00 total = 100 quando deveria ser 100,00 pois e moedaalguem pode me ajudarO javascript é péssimo para trabalhar com números. Para formatar o resultado, utilize essa função:CODE

function twoDecimal(numAmount) {	return (numAmount == Math.floor(numAmount)) ? numAmount + ',00' : ((numAmount*10 == Math.floor(numAmount*10)) ? numAmount + '0' : numAmount);}
No código fica assimCODE
function calculaMoeda(){	objQuant = document.getElementById('quant1');	objTotal1 = document.getElementById('total1');	nextfield ='icms1';	objTotal1.value = twoDecimal (objQuant.value * objQuant.value);}<input ... onFocus="calculaMoeda()">
Veja se é isso que você quer.[/code]

O problema está nesses parseInt que você colocou. Ele serve para transformar a variável em um número inteiro, ou seja, sem os decimais. Entendo que você utilizou porque inicialmente são variáveis do tipo string (texto), mas nesse caso utilize parseFloat. É a mesma coisa que o parseInt só que para números flutuantes, ou seja, decimais.Veja se resolve.Abraço.

o cara ta acontecendo uma coisa gozada eu mando calcular 10X12,02 = 120.199999999999990, ai tenho dois problemas o primeiro que esta calculando errado logico que o resultado e 120,20 e o segundo que os decimos virou milhenius, como faco para resolver isto

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então cara, javascript é uma porcaria pra trabalhar com números... esses cálculos errados acontecem mesmo.Quanto ao problema com os decimais, em javascript 10,20 é 10.20 por isso tá dando problema. Você tem que fazer um replace na string antes de usa-la.Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

continuo com o problema estou fazendo assim oque esta errado

 

function calculaMoeda1(){	objQuant = document.getElementById('quant1');	objvalor1 = document.getElementById('valor1');	var objQuant = objQuant 	var objvalor1 = objvalor1 	objQuant = objQuant.replace(/\./g,'').replace(/,/g,'.')	objvalor1 = objvalor1.replace(/\./g,'').replace(/,/g,'.')	objtotal1 = document.getElementById('total1');   objtotal1.value = twoDecimal (objQuant.value * objvalor1.value);}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Odir, tem algumas coisas erradas, arrumando:

 

function calculaMoeda1(){	objQuant = document.getElementById('quant1');	objvalor1 = document.getElementById('valor1');	var numQuant = objQuant.value;	var numvalor1 = objvalor1.value; 	numQuant = numQuant.replace(/\./g,'').replace(/,/g,'.');	numvalor1 = numvalor1.replace(/\./g,'').replace(/,/g,'.');	objtotal1 = document.getElementById('total1');	objtotal1.value = twoDecimal(numQuant * numvalor1);}
Veja se resolve, se não, coloque um parseFloat aqui:

 

numQuant = parseFloat(numQuant.replace(/\./g,'').replace(/,/g,'.'));	numvalor1 = parseFloat(numvalor1.replace(/\./g,'').replace(/,/g,'.'));

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara agora acontece o seguinte 10x12.02= 12020,00

 

o codigo esta assim

 

 

function calculaMoeda1(){	objQuant = document.getElementById('quant1');	objvalor1 = document.getElementById('valor1');	var numQuant = objQuant.value;	var numvalor1 = objvalor1.value;	numQuant = parseFloat(numQuant.replace(/\./g,'').replace(/,/g,'.'));	numvalor1 = parseFloat(numvalor1.replace(/\./g,'').replace(/,/g,'.'));		objtotal1 = document.getElementById('total1');	objtotal1.value = twoDecimal(numQuant * numvalor1);}

Compartilhar este post


Link para o post
Compartilhar em outros sites

você tem um campo de quantidade , outro de valor e o resultado total?se for la vai<html><head><script type="text/javascript">function formatCurrency(num) { num = num.toString().replace(/\$|\,/g,''); if(isNaN(num)) num = "0"; cents = Math.floor((num*100+0.5)%100); num = Math.floor((num*100+0.5)/100).toString(); if(cents < 10) cents = "0" + cents; for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++) num = num.substring(0,num.length-(4*i+3))+','+num.substring(num.length-(4*i+3)); return ("R$ " + num + "." + cents);}function vai(){ var doc = document.form; var qtd = parseInt(doc._qtd.value); var value = parseFloat( doc._valor.value.replace(/\./g,'').replace(',','.') ); doc._total.value = formatCurrency(qtd * value);}</script></head><body><form name="form"><input type="text" name="_qtd"><input type="text" name="_valor" onChange="vai()"><input type="text" name="_total"></form></center></body></html>se mata ;P

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara eh pq você digitou 12.02 com ponto, se for com virgula funciona certinhose for com ponto me passa os detalhes de como tem q funcionaramanha eu vejo

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.