Ir para conteúdo

POWERED BY:

Arquivado

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

Darmand

[Resolvido] Subtotal em número decimal

Recommended Posts

1. Você abriu dois tópicos com a mesma dúvida. Sendo assim, como o seu primeiro tópico não foi respondido e trata-se de um spam, irei apagá-lo.

 

2. Ao postar um link, tenha certeza que ele não está quebrado (editei e deixei o link correto, conforme estava em seu post antigo).

 

Abaixo o código para o seu problema:

<html>
<head>
<title></title>
<script type="text/javascript">
function calcular(id) {
//Quantidade de campos que serão somados:
numCampos = 3;

//Recuperando os objetos:
qtdeLinha = document.getElementById("qtde"+id);
valorUnid = document.getElementById("valor"+id);
totLinha = document.getElementById("total"+id);
valorSubTotal = document.getElementById("subtotal");
valorFreteTotal = document.getElementById("freteTotal");
freteUnico = document.getElementById("freteUnid");
valorTotalUnidades = document.getElementById("totalUnidades");
valorTotalFinal = document.getElementById("totalFinal");


	if (qtdeLinha.value.length != 0) {
		valorLinha = (parseFloat(qtdeLinha.value)*parseFloat(valorUnid.innerHTML));
		valorLinha = valorLinha.toFixed(2);
		totLinha.value = valorLinha;	
	}
	
	var iCount;
	var subTotal = 0;
	var qtdeTotal = 0;
	var totalFinal = 0;
	
	for (iCount = 1; iCount <= numCampos; iCount++) {
	calcSubtotal = document.getElementById("total"+iCount);
	calcQtdeTotal = document.getElementById("qtde"+iCount);
		
		if (calcSubtotal.value.length != 0) {
			subTotal += parseFloat(calcSubtotal.value);
			qtdeTotal += parseFloat(calcQtdeTotal.value);
		}
	}
	valorSubTotal.value = subTotal.toFixed(2);
	valorTotalUnidades.value = qtdeTotal;
	valorFreteTotal.value = (valorTotalUnidades.value*freteUnico.innerHTML).toFixed(2);
	valorTotalFinal.value = (parseFloat(valorSubTotal.value)+parseFloat(valorFreteTotal.value)).toFixed(2);
}
</script>
</head>
<body>
<form name="form1" action="" method="post">
<table border="1" width="700px">
<tr>
	<td with="40%">Produto</td><td>Quantidade</td><td>Valor unitário</td><td>Total:</td>
</tr>
<tr>
	<td>Processador KlonderProcessor</td><td><input type="text" id="qtde1" onblur="calcular(1)"></td><td>x R$ <span id="valor1">167.45</span></td><td><input type="text" id="total1" readonly></td>
</tr>
<tr>
	<td>Memória KlonderMemory</td><td><input type="text" id="qtde2" onblur="calcular(2)"></td><td>x R$ <span id="valor2">57.75</span></td><td><input type="text" id="total2" readonly></td>
</tr>
<tr>
	<td>HD KlonderHD 320Gb</td><td><input type="text" id="qtde3" onblur="calcular(3)"></td><td>x R$ <span id="valor3">430.90</span></td><td><input type="text" id="total3" readonly></td>
</tr>
<tr>
	<td align="right" colspan="4">Subtotal: <input type="text" id="subtotal" readonly></td>
</tr>
</table>

<br><br>

<table border="0" width="700px">
<tr>
	<td with="40%" align="center">Unidades:</td>
	<td align="center">Valor frete:</td>
	<td align="center">Frete total:</td>
</tr>
<tr>
	<td align="center"><input type="text" id="totalUnidades" readonly></td>
	<td align="center">x R$ <span id="freteUnid">10.00</span></td>
	<td align="center">R$ <input type="text" id="freteTotal" readonly></td>
</tr>
</table>

<br><br>

<table border="0" width="700px">
<tr>
	<td with="40%" align="center">Total a pagar:</td><td>R$ <input type="text" id="totalFinal" readonly></td>
</tr>
</table>
</form>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prezado Klonder, peço desculpas pelo meu erro em colocar dois posts.

 

Eu não sou nada íntimo de Javascript e estou procurando estudar cada dia mais.

 

Mas, surgiu um problema no meu trabalho e não consegui resolver.

 

Vi seu código, contém os dados que preciso, mas não consegui que rodasse.

 

Simplesmente copiei teu código para um novo HTML e rodei, falta eu fazer algo para que ele funcione?

 

Um grande abraço, te agradeço mesmo!

 

 

 

 

1. Você abriu dois tópicos com a mesma dúvida. Sendo assim, como o seu primeiro tópico não foi respondido e trata-se de um spam, irei apagá-lo.

 

2. Ao postar um link, tenha certeza que ele não está quebrado (editei e deixei o link correto, conforme estava em seu post antigo).

 

Abaixo o código para o seu problema:

<html>
<head>
<title></title>
<script type="text/javascript">
function calcular(id) {
//Quantidade de campos que serão somados:
numCampos = 3;

//Recuperando os objetos:
qtdeLinha = document.getElementById("qtde"+id);
valorUnid = document.getElementById("valor"+id);
totLinha = document.getElementById("total"+id);
valorSubTotal = document.getElementById("subtotal");
valorFreteTotal = document.getElementById("freteTotal");
freteUnico = document.getElementById("freteUnid");
valorTotalUnidades = document.getElementById("totalUnidades");
valorTotalFinal = document.getElementById("totalFinal");


	if (qtdeLinha.value.length != 0) {
		valorLinha = (parseFloat(qtdeLinha.value)*parseFloat(valorUnid.innerHTML));
		valorLinha = valorLinha.toFixed(2);
		totLinha.value = valorLinha;	
	}
	
	var iCount;
	var subTotal = 0;
	var qtdeTotal = 0;
	var totalFinal = 0;
	
	for (iCount = 1; iCount <= numCampos; iCount++) {
	calcSubtotal = document.getElementById("total"+iCount);
	calcQtdeTotal = document.getElementById("qtde"+iCount);
		
		if (calcSubtotal.value.length != 0) {
			subTotal += parseFloat(calcSubtotal.value);
			qtdeTotal += parseFloat(calcQtdeTotal.value);
		}
	}
	valorSubTotal.value = subTotal.toFixed(2);
	valorTotalUnidades.value = qtdeTotal;
	valorFreteTotal.value = (valorTotalUnidades.value*freteUnico.innerHTML).toFixed(2);
	valorTotalFinal.value = (parseFloat(valorSubTotal.value)+parseFloat(valorFreteTotal.value)).toFixed(2);
}
</script>
</head>
<body>
<form name="form1" action="" method="post">
<table border="1" width="700px">
<tr>
	<td with="40%">Produto</td><td>Quantidade</td><td>Valor unitário</td><td>Total:</td>
</tr>
<tr>
	<td>Processador KlonderProcessor</td><td><input type="text" id="qtde1" onblur="calcular(1)"></td><td>x R$ <span id="valor1">167.45</span></td><td><input type="text" id="total1" readonly></td>
</tr>
<tr>
	<td>Memória KlonderMemory</td><td><input type="text" id="qtde2" onblur="calcular(2)"></td><td>x R$ <span id="valor2">57.75</span></td><td><input type="text" id="total2" readonly></td>
</tr>
<tr>
	<td>HD KlonderHD 320Gb</td><td><input type="text" id="qtde3" onblur="calcular(3)"></td><td>x R$ <span id="valor3">430.90</span></td><td><input type="text" id="total3" readonly></td>
</tr>
<tr>
	<td align="right" colspan="4">Subtotal: <input type="text" id="subtotal" readonly></td>
</tr>
</table>

<br><br>

<table border="0" width="700px">
<tr>
	<td with="40%" align="center">Unidades:</td>
	<td align="center">Valor frete:</td>
	<td align="center">Frete total:</td>
</tr>
<tr>
	<td align="center"><input type="text" id="totalUnidades" readonly></td>
	<td align="center">x R$ <span id="freteUnid">10.00</span></td>
	<td align="center">R$ <input type="text" id="freteTotal" readonly></td>
</tr>
</table>

<br><br>

<table border="0" width="700px">
<tr>
	<td with="40%" align="center">Total a pagar:</td><td>R$ <input type="text" id="totalFinal" readonly></td>
</tr>
</table>
</form>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acabei de testar no Chrome, FF e IE7, e rodou em todos, sem problemas.

 

Como você citou o link para um formulário (exemplo), procurei manter parte das características relacionadas principalmente aos eventos, ou seja, o usuário digita uma quantidade em um campo, quando ele clica em outro campo, o evento "onkeyup" é disparado e chama a função responsável pela soma.

 

Não vi erro no código, mas se você puder informar o que está acontecendo, eu tentarei resolver pra você.

 

Em quais navegadores você testou?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Klonder, funcionou perfeitamente, você estava certo, eu simplesmente esqueci de colocar a chamada do order.js.

 

Está perfeito, somente está aparecendo uma chamada de erro na linha 82, mas a funcionalidade está 100%.

 

Cara, nem sei como te agradecer, se precisares estarei mais que disposto a colaborar e fazer o máximo.

 

Muito obrigado mesmo!

 

Parabéns pelo seu excelente trabalho!

 

Um abraço do amigo do Pará.

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.