Ir para conteúdo

POWERED BY:

Arquivado

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

Carcleo

calculando o total da nota

Recommended Posts

Olá pessoal.

Boa noite.

 

Tenho um form

e dentro desse form tenho um while php que vai adicionando campos ao form conforme for o numero de registros de uma consulta sql.

Bom, tenho uma função que , ao passo que preenchemos o value do campo quantidade por exemplo, é feito um calculo para saber quanto daria o valor total do preço desse produto vezes a quantidade colocada sem submeter o form e colocar esse valor em um label.

// JavaScript Document
function calculo(qtde, vl, quant, quan, label)
   {	  
      total = qtde * vl;
	  total = format_number(total,2);
	  document.getElementById(quan).value=qtde;
      document.getElementById(label).innerHTML=total;
   }

Agora gostaria de montar um função que, ao deixar o campo (após colocar a quantidade), faz uma varrida por todos os labeis om seus respectivos valores e dê um valor total para todos os ítens que os valores das suas quantidades forma alteras de 0 (padrão).

 

Preciso da ajuda de vocês.

 

Segue meu codigo

  
 <table border=1 width=800 align=center>
        <tr><td colspan=11 align=center><h4>Para comprar o produto, informe a quantidade de ítens na coluna Quantidade<br>e clicke no botão "Enviar todos os ítens" no final da lista.<br>Para NÃO comprar o produto, deixar a coluna Quantidade com o valor 0 (zero).
<br> Caso quera adicionar alguma observação do produto, preencha o campo Observaçao Cliente.</td><tr>
           <tr>
		  <td colspan='11' align='center'>O valor total da nota até agora é de R$0.00</td>
		</tr>
           <tr>
          <td align=center>Lista</td>
          <td align=center>Condição</td>
		  <td align=center>Produto</td>
		  <td align=center>Qtde.<br>na caixa</td>
		  <td align=center>Preço por<br>unidade<br>na caixa</td>
		  <td align=center>Preço Caixa</td>			  
		  <td align=center>Quantidade</td>
		  <td align=center>Sub Total</td>
		  <td align=center>Observação<br>Empresa</td>
		 </tr>
	  <form action="carrinho.php?op=adicionar" method="post" name="envia_tudo"><tr><td align=left colspan=6>Fornecedor:   Malta S/A - CNPJ=  11.111.111/1111-11</td>  
	           <td align=left colspan=5><font color="red">Condição de pagamento:</font>     
			  <input type="radio" name="0[radio_pgto]" id="0[radio_pgto]" value="1" checked="checked" onclick="fecha('0[div_pgto_prazo]'); entrega_valores(2,0, this.value,'radio_pgto' )""> À vista
			  <input type="radio" name="0[radio_pgto]" id="0[radio_pgto]" value="2" onclick="abre('0[div_pgto_prazo]'); entrega_valores(2,0, this.value,'radio_pgto' )""> À prazo
			  <div id="0[div_pgto_prazo]" style="display:none">
				 Prazos para pagamento para produtos deste fornecedor: <label id="label_prazo">30 dias</label>
			  </div>
			    </td></tr><input type="hidden" name="1[radio_pgto]" id="1[radio_pgto]" value="1"><input type="hidden" name="0[label_prazo]" id="0[label_prazo]" value="30 dias"><input type="hidden" name="1[label_prazo]" id="1[label_prazo]" value="30 dias">
		  <tr><td align=left colspan=11><font color="red">Observação do cliente para o fornecedor:</font>    
		     <input type="text" onBlur="entrega_valores(2,0, this.value,'observa_cli' )"\ name="0[observa_cli]"  id="0[observa_cli]" value="" style="border-color:black">
		   </td></tr><input type="hidden" name="1[observa_cli]" id="1[observa_cli]" value=""><input type="hidden" name="0[id_prod]"  id="0[id_prod]" value="3">
					 <input type="hidden" name="0[quan]" id="0[quan]" value="">	
					 <input type="hidden" name="0[id_lista]" name="0[id_lista]" value="1">		   
					 <input type="hidden" name="0[imposto]" name="0[imposto]" value="10.00">		   
					<tr>
						<td align=center>1</td>
						<td align=letf>Encarte</td>
						<td align=let>Cevada</td>
						<td align=center>15</td>
						<td align=right>R$ 0.24</td>
						<td align=right>R$ 3.63</td>
						<td align=right>
		  <input type=text id=0[quant] value=0 size=2 style="text-align: center;" 
		  onKeyPress="BloqueiaLetras();" 
		  onchange="calculo(this.value, 3.63,'0[quant]','0[quan]','0[label_preco]');" >
						</td>			  
						<td align=right>R$ <label id="0[label_preco]">0.00</label></td>			  
						<td align=left>Sem observação</td>
					  </tr><input type="hidden" name="1[id_prod]"  id="1[id_prod]" value="6">
					 <input type="hidden" name="1[quan]" id="1[quan]" value="">	
					 <input type="hidden" name="1[id_lista]" name="1[id_lista]" value="1">		   
					 <input type="hidden" name="1[imposto]" name="1[imposto]" value="20.00">		   
					<tr>
						<td align=center>1</td>
						<td align=letf>Complemento</td>
						<td align=let>Pão</td>
						<td align=center>12</td>
						<td align=right>R$ 0.32</td>
						<td align=right>R$ 3.84</td>
						<td align=right>
		  <input type=text id=1[quant] value=0 size=2 style="text-align: center;" 
		  onKeyPress="BloqueiaLetras();" 
		  onchange="calculo(this.value, 3.84,'1[quant]','1[quan]','1[label_preco]');" >
						</td>			  
						<td align=right>R$ <label id="1[label_preco]">0.00</label></td>			  
						<td align=left>Sem observação</td>
					  </tr>
			 <tr>
				 <td align=center valign="middle" colspan=11 height=50>
				   <input type="submit" value="Enviar todos os ítens">
				  </form>
				 </td>
			 </tr> 
			 <tr>
				 <td align=center valign="middle" colspan=11 height=50>
				   <a href="javascript:history.go(-1);">Voltar</a>
				 </td>
			 </tr>  </form></table>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode usar o evento onblur direto na tag do elemento e passar seu valor como parâmetro:

 

<input onblur="calcula(this.value)" />

ou pode fazer tudo no JS:

 

document.getElementById("meucampo").onblur = function() {
   // blablablá
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Eliseu.

 

Obrigado pela resposta mas talvez você não tenha me entendido muito bem.

 

A função que eu tenho, calcula o valor Quant X Preco, quando digito a quantidade de produtos (no produto daquela linha).

 

Porem, são vários os produtos que aparecem no form. Na verdade, é um while php para listar os produtos dentro d form.

 

Então eu terei no form n produtos para eu escolher e colocar a quantidade.

 

O que eu queria era saber como que eu vou, após colocar a quantidade em um campo, varrer todos os outros campos e ver seu valor para somar e informar o valor total da nota.

 

Resumindo o form, Seria mais ou menos assim:

<form action="carrinho.php?op=adicionar" method="post" name="envia_tudo">
<input type=text id=1[quant] value="0" onchange="calculo(this.value, 3.84,'1[quant]','1[quan]','1[label_preco]');" >
<input type=text id=2[quant] value="0" onchange="calculo(this.value, 3.84,'2[quant]','2[quan]','2[label_preco]');" >
<input type=text id=3[quant] value="0" onchange="calculo(this.value, 3.84,'3[quant]','3[quan]','3[label_preco]');" >
<input type=text id=4[quant] value="0" onchange="calculo(this.value, 3.84,'4[quant]','4[quan]','4[label_preco]');" >
<input type=text id=5[quant] value="0" onchange="calculo(this.value, 3.84,'5[quant]','5[quan]','5[label_preco]');" >
.............
<input type=text id=n[quant] value="0" onchange="calculo(this.value, 3.84,'n[quant]','n[quan]','n[label_preco]');" >
<input type="submit">
</form>

Aqui, a cada vez que eu uso a função calculo, ele calculo ptecoXQuantidade, para o produto daquel textbox. Preciso agora pega esse valor somar aos demais texbox

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hmm... a melhor forma será atribuir uma classe comum à todos esses campos e atribuir o evento. Exemplo usando jQuery:

 

var $quantities = $("input.quantity");

$quantities.live('blur', function () {

var total = 0;

$quantities.each(function () {

total += $(this).val();

};

};[code]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Irmão.

 

Nessa parte de programaçao orintada ao Browser eu sou beeeeeeem leigo.

 

Sou melhor em php.

 

Teria como dar uma esplicaçao melhor?

 

Muito obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, estou quase conseguindo:

 

<form action="carrinho.php?op=adicionar" method="post" name="envia_tudo">
<input type="text" id="1[quant]" value="0" onblur="calcula(this.value)"><br>
<input type="text" id="2[quant]" value="0" onblur="calcula(this.value)"><br>
<input type="text" id="3[quant]" value="0" onblur="calcula(this.value)"><br>
<input type="text" id="4[quant]" value="0" onblur="calcula(this.value)"><br>
<input type="text" id="5[quant]" value="0" onblur="calcula(this.value)"><br>
<input type="submit"><p><p>
</form>

<script>
function calcula()
{
 for (i=0;i<4;i++)
 {
   //valor_total=+eval(document.form.i[quant].value);
campo = 'document.getElementById('+i+'[quant]).value';
   valor_total=+eval(campo);
 }
 valor_nota = valor_total;
 document.getElementById('labeltotal').innerHTML = valor_nota
}
</script>

<label id="labeltotal"></label>

Aqui anda teem alguns problemas:

 

No caso dos imnputs assim:

<input type="text" id="1[quant]" value="0" onblur="calcula(this.value)"><br>
<input type="text" id="2[quant]" value="0" onblur="calcula(this.value)"><br>
<input type="text" id="3[quant]" value="0" onblur="calcula(this.value)"><br>
<input type="text" id="4[quant]" value="0" onblur="calcula(this.value)"><br>
<input type="text" id="5[quant]" value="0" onblur="calcula(this.value)"><br>

Como é que eu vou, uma vez que eles são gerads dinamicamente pelo php, transformar isso em uma array para calcular seu tamanho e fazer o proximo passo:

..
for (i=0;i<4;i++) => No caso esse 4 seria o tamanho do array;

..

Outro dilema é como é que vou somar acumulativamente os valores dos inputs:

//valor_total=+eval(document.form.i[quant].value);
campo = 'document.getElementById('+i+'[quant]).value';
   valor_total=+eval(campo);

Seria assim mesmo?

No caso, isso esta retornando assim:

 document.getElementById(0[quant]).value

E não:

 document.getElementById('0[quant]').value

Como arrumar isso?

 

Grato a quem puder ajudar.

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.