Bom dia pessoal,
Estou com um probleminha aqui.
Preciso multiplicar um valor de “quantidade” com um valor de moeda e retornar esse valor para um text desabilitado “valor total”. Estou fazendo isso com um script.
Porém quando retorna o valor já calculado, ele preenche meu campo valorTotal como NaN.
Como posso fazer esse tratamento, pq preciso converter para um numero inteiro valido. Lembrando que o calculo esta sendo feito entre o “valorUnitario” que uso uma mascara de moeda e a quantidade q é um numero inteiro.
function calcula(){
var quant = document.getElementById("quantidade").value;
var unidade = document.getElementById("valorUnitario").value;
var total = parseFloat(quant*unidade);
document.getElementById("valorTotal").value = total;
}
Espero que alguma alma de luz possa me ajudar. Rs…
Abraços.
Desculpem pessoal se não esclareci direito…
o usuario entra com um quantidade = 5 por exemplo. O valor unitario de cada é 10,00 reais.
Entao, essa function, teria q me retornar no campo Valor Total = 50,00.
Teria q utilizar a mascara nesse campo tbm???
Algum de seus valores (quant ou unidade) deve estar com alguma vírgula. Se isso ocorrer, o Javascript não sabe converter (ele só conhece notação americana) e acaba convertendo para o valor especial numérico NaN. Esse valor “contamina” qualquer coisa - NaN multiplicado por qualquer coisa dá NaN.
Portanto, em vez de pegar diretamente o valor da tela, você tem de chamar alguma rotina sua que “massageia” o valor lido, e lhe retorna um valor númerico válido.
Gabriel, isso ocorre pois um dos valores está vazio OU com caracteres incompatíveis com calculo, segue uma outra forma de implementação. Acredito que irá resolver:
[code]function calcula(){
var quant = document.getElementById(“quantidade”).value;
var unidade = document.getElementById(“valorUnitario”).value;
if((quant == "" || quant == null) && (unidade == "" || unidade == null))
return false;
while(quant.indexOf(',') != -1)
quant = quant.replace(',','.');
while(unidade.indexOf(',') != -1)
unidade = unidade.replace(',','.');
var total = parseFloat(quant*unidade);
document.getElementById("valorTotal").value = total;
}
[/code]
Abraços Brother,
Cláudio Coelho
Hehehe…FUNCIONOU LINDO…hehehehe
Esse é meu irmão…the JavasMan. hehehe
Valeu maninho.
Abraços…
O código está funcionando perfeitamente, mas preciso de uma coisinha a mais.
O resultado final do código não aparece os “,00” depois da vírgula.
Como faço para que ele apareça os “,00” depois da vírgula?