Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa Tarde!
Tenho um sistema de vendas em php que utiliza uma função em ajax, para poder trazer o produto quando ele é selecionado,
entretanto era para ele estar fazendo a soma dos produtos automaticamente, mas ele não realiza essa função, ele só esta somando quando eu clico no campo do input do produto e mesmo assim se eu tiver por exemplo 10 produtos, e eu clicar no input do primeiro item ele apenas mostra o valor total do primeiro item sem somar os demais...
poderiam estar me ajudando a como resolver um problema de calculo dinamico.
////////////////////////// ITEM 1
function passar_1(){
var bitem_1 = document.getElementById("bitem_1");
var item_1 = document.getElementById("item_1");
item_1.value = bitem_1.value;
var bqnt_1 = document.getElementById("bqnt_1");
var qnt_1 = document.getElementById("qnt_1");
qnt_1.value = bqnt_1.value;
var bvlr_1 = document.getElementById("bvlr_1");
var vlr_1 = document.getElementById("vlr_1");
var vlritem_1 = document.getElementById("vlritem_1");
var vlr_pedido = document.getElementById("vlr_pedido");
var total = document.getElementById("total");
vlr_1.value = bvlr_1.value;
vlritem_1.value = bvlr_1.value;
vlr_pedido.value = bvlr_1.value;
total.value = bvlr_1.value;
};
function calcula_1() {var tqnt_1 = document.getElementById("qnt_1").value;
var tvlr_1 = document.getElementById("vlr_1").value;
if((tqnt_1 == "" || tqnt_1 == null) && (tvlr_1 == "" || tvlr_1 == null))
return false;
//retira caracteres especiais do campo
while(tqnt_1.indexOf(',') != -1)
tqnt_1 = tqnt_1.replace(',','.');
//retira caracteres especiais do campo
while(tvlr_1.indexOf(',') != -1)
tvlr_1 = tvlr_1.replace(',','.');
// multiplica os 2 campos
t_vlritem_1 = parseFloat(tqnt_1*tvlr_1);
// passa o valor para o campo total
document.form1.vlritem_1.value = t_vlritem_1;
//valor do pedido
document.form1.vlr_pedido.value = t_vlritem_1;
//valor total
document.form1.total.value = t_vlritem_1;
} //fecha function calcula
////////////////////////// ITEM 2
function passar_2(){
var bitem_2 = document.getElementById("bitem_2");
var item_2 = document.getElementById("item_2");
item_2.value = bitem_2.value;
var bqnt_2 = document.getElementById("bqnt_2");
var qnt_2 = document.getElementById("qnt_2");
qnt_2.value = bqnt_2.value;
var bvlr_2 = document.getElementById("bvlr_2");
var vlr_2 = document.getElementById("vlr_2");
var vlritem_2 = document.getElementById("vlritem_2");
var vlr_pedido = document.getElementById("vlr_pedido");
var total = document.getElementById("total");
vlr_2.value = bvlr_2.value;
vlritem_2.value = bvlr_2.value;
var vlr_pedidoc = document.getElementById("vlr_pedido").value;
var vlritem_2c = document.getElementById("vlritem_2").value;
if((vlr_pedidoc == "" || vlr_pedidoc == null) && (vlritem_2c == "" || vlritem_2c == null))
return false;
//retira caracteres especiais do campo
while(vlr_pedidoc.indexOf(',') != -1)
vlr_pedidoc = vlr_pedidoc.replace(',','.');
//retira caracteres especiais do campo
while(vlritem_2c.indexOf(',') != -1)
vlritem_2c = vlritem_2c.replace(',','.');
gu = parseFloat(vlr_pedidoc) + parseFloat(vlritem_2c);
document.form1.vlr_pedido.value = gu;
document.form1.total.value = gu;
};
// aqui começa o srcipt da quantidade
function calcula_2() {
//Pega novamente as variaveis para um novo calculo
var tqnt_2 = document.getElementById("qnt_2").value;
var tvlr_2 = document.getElementById("vlr_2").value;
if((tqnt_2 == "" || tqnt_2 == null) && (tvlr_2 == "" || tvlr_2 == null))
return false;
//retira caracteres especiais do campo
while(tqnt_2.indexOf(',') != -1)
tqnt_2 = tqnt_2.replace(',','.');
//retira caracteres especiais do campo
while(tvlr_2.indexOf(',') != -1)
tvlr_2 = tvlr_2.replace(',','.');
// multiplica os 2 campos
t_vlritem_2 = parseFloat(tqnt_2*tvlr_2);
// passa o valor para o campo total
document.form1.vlritem_2.value = t_vlritem_2;
var vlr_pedidoc = document.getElementById("vlritem_1").value;
var vlritem_2c = document.getElementById("vlritem_2").value;
if((vlr_pedidoc == "" || vlr_pedidoc == null) && (vlritem_2c == "" || vlritem_2c == null))
return false;
//retira caracteres especiais do campo
while(vlr_pedidoc.indexOf(',') != -1)
vlr_pedidoc = vlr_pedidoc.replace(',','.');
//retira caracteres especiais do campo
while(vlritem_2c.indexOf(',') != -1)
vlritem_2c = vlritem_2c.replace(',','.');
gu2 = parseFloat(vlr_pedidoc) + parseFloat(vlritem_2c);
//valor do pedido
document.form1.vlr_pedido.value = gu2;
//valor total
document.form1.total.value = gu2;
} //fecha function calcula
////////////////////////// ITEM 3
function passar_3(){
var bitem_3 = document.getElementById("bitem_3");
var item_3 = document.getElementById("item_3");
item_3.value = bitem_3.value;
var bqnt_3 = document.getElementById("bqnt_3");
var qnt_3 = document.getElementById("qnt_3");
qnt_3.value = bqnt_3.value;
var bvlr_3 = document.getElementById("bvlr_3");
var vlr_3 = document.getElementById("vlr_3");
var vlritem_3 = document.getElementById("vlritem_3");
var vlr_pedido = document.getElementById("vlr_pedido");
var total = document.getElementById("total");
vlr_3.value = bvlr_3.value;
vlritem_3.value = bvlr_3.value;
var vlr_pedidoc = document.getElementById("vlr_pedido").value;
var vlritem_3c = document.getElementById("vlritem_3").value;
if((vlr_pedidoc == "" || vlr_pedidoc == null) && (vlritem_3c == "" || vlritem_3c == null))
return false;
//retira caracteres especiais do campo
while(vlr_pedidoc.indexOf(',') != -1)
vlr_pedidoc = vlr_pedidoc.replace(',','.');
//retira caracteres especiais do campo
while(vlritem_3c.indexOf(',') != -1)
vlritem_3c = vlritem_3c.replace(',','.');
gu = parseFloat(vlr_pedidoc) + parseFloat(vlritem_3c);
document.form1.vlr_pedido.value = gu;
document.form1.total.value = gu;
};
// aqui começa o srcipt da quantidade
function calcula_3() {
//Pega novamente as variaveis para um novo calculo
var tqnt_3 = document.getElementById("qnt_3").value;
var tvlr_3 = document.getElementById("vlr_3").value;
if((tqnt_3 == "" || tqnt_3 == null) && (tvlr_3 == "" || tvlr_3 == null))
return false;
//retira caracteres especiais do campo
while(tqnt_3.indexOf(',') != -1)
tqnt_3 = tqnt_3.replace(',','.');
//retira caracteres especiais do campo
while(tvlr_3.indexOf(',') != -1)
tvlr_3 = tvlr_3.replace(',','.');
// multiplica os 2 campos
t_vlritem_3 = parseFloat(tqnt_3*tvlr_3);
// passa o valor para o campo total
document.form1.vlritem_3.value = t_vlritem_3;
var vlritem_1c = document.getElementById("vlritem_1").value;
var vlritem_2c = document.getElementById("vlritem_2").value;
var vlritem_3c = document.getElementById("vlritem_3").value;
if((vlritem_1c == "" || vlritem_1c == null) && (vlritem_2c == "" || vlritem_2c == null) && (vlritem_3c == "" || vlritem_3c == null))
return false;
//retira caracteres especiais do campo
while(vlritem_1c.indexOf(',') != -1)
vlritem_1c = vlritem_1c.replace(',','.');
//retira caracteres especiais do campo
while(vlritem_2c.indexOf(',') != -1)
vlritem_2c = vlritem_2c.replace(',','.');
//retira caracteres especiais do campo
while(vlritem_3c.indexOf(',') != -1)
vlritem_3c = vlritem_3c.replace(',','.');
gu2 = parseFloat(vlritem_1c) + parseFloat(vlritem_2c) + parseFloat(vlritem_3c);
//valor do pedido
document.form1.vlr_pedido.value = gu2;
//valor total
document.form1.total.value = gu2;
} //fecha function calcula
////////////////////////// ITEM 4
function passar_4(){
var bitem_4 = document.getElementById("bitem_4");
var item_4 = document.getElementById("item_4");
item_4.value = bitem_4.value;
var bqnt_4 = document.getElementById("bqnt_4");
var qnt_4 = document.getElementById("qnt_4");
qnt_4.value = bqnt_4.value;
var bvlr_4 = document.getElementById("bvlr_4");
var vlr_4 = document.getElementById("vlr_4");
var vlritem_4 = document.getElementById("vlritem_4");
var vlr_pedido = document.getElementById("vlr_pedido");
var total = document.getElementById("total");
vlr_4.value = bvlr_4.value;
vlritem_4.value = bvlr_4.value;
var vlr_pedidoc = document.getElementById("vlr_pedido").value;
var vlritem_4c = document.getElementById("vlritem_4").value;
if((vlr_pedidoc == "" || vlr_pedidoc == null) && (vlritem_4c == "" || vlritem_4c == null))
return false;
//retira caracteres especiais do campo
while(vlr_pedidoc.indexOf(',') != -1)
vlr_pedidoc = vlr_pedidoc.replace(',','.');
//retira caracteres especiais do campo
while(vlritem_4c.indexOf(',') != -1)
vlritem_4c = vlritem_4c.replace(',','.');
gu = parseFloat(vlr_pedidoc) + parseFloat(vlritem_4c);
document.form1.vlr_pedido.value = gu;
document.form1.total.value = gu;
};
// aqui começa o srcipt da quantidade
function calcula_4() {
//Pega novamente as variaveis para um novo calculo
var tqnt_4 = document.getElementById("qnt_4").value;
var tvlr_4 = document.getElementById("vlr_4").value;
if((tqnt_4 == "" || tqnt_4 == null) && (tvlr_4 == "" || tvlr_4 == null))
return false;
//retira caracteres especiais do campo
while(tqnt_4.indexOf(',') != -1)
tqnt_4 = tqnt_4.replace(',','.');
//retira caracteres especiais do campo
while(tvlr_4.indexOf(',') != -1)
tvlr_4 = tvlr_4.replace(',','.');
// multiplica os 2 campos
t_vlritem_4 = parseFloat(tqnt_4*tvlr_4);
// passa o valor para o campo total
document.form1.vlritem_4.value = t_vlritem_4;
var vlritem_1c = document.getElementById("vlritem_1").value;
var vlritem_2c = document.getElementById("vlritem_2").value;
var vlritem_3c = document.getElementById("vlritem_3").value;
var vlritem_4c = document.getElementById("vlritem_4").value;
if((vlritem_1c == "" || vlritem_1c == null) && (vlritem_2c == "" || vlritem_2c == null) && (vlritem_3c == "" || vlritem_3c == null) && (vlritem_4c == "" || vlritem_4c == null))
return false;
//retira caracteres especiais do campo
while(vlritem_1c.indexOf(',') != -1)
vlritem_1c = vlritem_1c.replace(',','.');
//retira caracteres especiais do campo
while(vlritem_2c.indexOf(',') != -1)
vlritem_2c = vlritem_2c.replace(',','.');
//retira caracteres especiais do campo
while(vlritem_3c.indexOf(',') != -1)
vlritem_3c = vlritem_3c.replace(',','.');
//retira caracteres especiais do campo
while(vlritem_4c.indexOf(',') != -1)
vlritem_4c = vlritem_4c.replace(',','.');
gu2 = parseFloat(vlritem_1c) + parseFloat(vlritem_2c) + parseFloat(vlritem_3c) + parseFloat(vlritem_4c);
//valor do pedido
document.form1.vlr_pedido.value = gu2;
//valor total
document.form1.total.value = gu2;
} //fecha function calcula
////////////////////////// ITEM 5
function passar_5(){
var bitem_5 = document.getElementById("bitem_5");
var item_5 = document.getElementById("item_5");
item_5.value = bitem_5.value;
var bqnt_5 = document.getElementById("bqnt_5");
var qnt_5 = document.getElementById("qnt_5");
qnt_5.value = bqnt_5.value;
var bvlr_5 = document.getElementById("bvlr_5");
var vlr_5 = document.getElementById("vlr_5");
var vlritem_5 = document.getElementById("vlritem_5");
var vlr_pedido = document.getElementById("vlr_pedido");
var total = document.getElementById("total");
vlr_5.value = bvlr_5.value;
vlritem_5.value = bvlr_5.value;
var vlr_pedidoc = document.getElementById("vlr_pedido").value;
var vlritem_5c = document.getElementById("vlritem_5").value;
if((vlr_pedidoc == "" || vlr_pedidoc == null) && (vlritem_5c == "" || vlritem_5c == null))
return false;
//retira caracteres especiais do campo
while(vlr_pedidoc.indexOf(',') != -1)
vlr_pedidoc = vlr_pedidoc.replace(',','.');
//retira caracteres especiais do campo
while(vlritem_5c.indexOf(',') != -1)
vlritem_5c = vlritem_5c.replace(',','.');
gu = parseFloat(vlr_pedidoc) + parseFloat(vlritem_5c);
document.form1.vlr_pedido.value = gu;
document.form1.total.value = gu;
};
// aqui começa o srcipt da quantidade
function calcula_5() {
//Pega novamente as variaveis para um novo calculo
var tqnt_5 = document.getElementById("qnt_5").value;
var tvlr_5 = document.getElementById("vlr_5").value;
if((tqnt_5 == "" || tqnt_5 == null) && (tvlr_5 == "" || tvlr_5 == null))
return false;
//retira caracteres especiais do campo
while(tqnt_5.indexOf(',') != -1)
tqnt_5 = tqnt_5.replace(',','.');
//retira caracteres especiais do campo
while(tvlr_5.indexOf(',') != -1)
tvlr_5 = tvlr_5.replace(',','.');
// multiplica os 2 campos
t_vlritem_5 = parseFloat(tqnt_5*tvlr_5);
// passa o valor para o campo total
document.form1.vlritem_5.value = t_vlritem_5;
var vlritem_1c = document.getElementById("vlritem_1").value;
var vlritem_2c = document.getElementById("vlritem_2").value;
var vlritem_3c = document.getElementById("vlritem_3").value;
var vlritem_4c = document.getElementById("vlritem_4").value;
var vlritem_5c = document.getElementById("vlritem_5").value;
if((vlritem_1c == "" || vlritem_1c == null) && (vlritem_2c == "" || vlritem_2c == null) && (vlritem_3c == "" || vlritem_3c == null) && (vlritem_4c == "" || vlritem_4c == null) && (vlritem_5c == "" || vlritem_5c == null))
return false;
//retira caracteres especiais do campo
while(vlritem_1c.indexOf(',') != -1)
vlritem_1c = vlritem_1c.replace(',','.');
//retira caracteres especiais do campo
while(vlritem_2c.indexOf(',') != -1)
vlritem_2c = vlritem_2c.replace(',','.');
//retira caracteres especiais do campo
while(vlritem_3c.indexOf(',') != -1)
vlritem_3c = vlritem_3c.replace(',','.');
//retira caracteres especiais do campo
while(vlritem_4c.indexOf(',') != -1)
vlritem_4c = vlritem_4c.replace(',','.');
while(vlritem_5c.indexOf(',') != -1)
vlritem_5c = vlritem_5c.replace(',','.');
gu2 = parseFloat(vlritem_1c) + parseFloat(vlritem_2c) + parseFloat(vlritem_3c) + parseFloat(vlritem_4c) + parseFloat(vlritem_5c);
//valor do pedido
document.form1.vlr_pedido.value = gu2;
//valor total
document.form1.total.value = gu2;
} //fecha function calcula
////////////////////DESCONTO
function calcula_desc() {
//Pega novamente as variaveis para um novo calculo
var tdesconto = document.getElementById("desconto").value;
var ttotal = document.getElementById("vlr_pedido").value;
if((tdesconto == "" || tdesconto == null) && (ttotal == "" || ttotal == null))
return false;
//retira caracteres especiais do campo
while(tdesconto.indexOf(',') != -1)
tdesconto = tdesconto.replace(',','.');
//retira caracteres especiais do campo
while(ttotal.indexOf(',') != -1)
ttotal = ttotal.replace(',','.');
// Subtrai os 2 campos
tt = parseFloat(ttotal-(tdesconto));
// passa o valor para o campo total
document.form1.total.value = tt;
}
////////////////////////////////////PARCELA
function calcula_par() {
//Pega novamente as variaveis para um novo calculo
var ttotal = document.getElementById("total").value;
var tvezes = document.getElementById("n_par").value;
if((ttotal == "" || ttotal == null) && (tvezes == "" || tvezes == null))
return false;
//retira caracteres especiais do campo
while(ttotal.indexOf(',') != -1)
ttotal = ttotal.replace(',','.');
//retira caracteres especiais do campo
while(tvezes.indexOf(',') != -1)
tvezes = tvezes.replace(',','.');
// Subtrai os 2 campos
tz = parseFloat(ttotal/tvezes);
// passa o valor para o campo total
document.form1.vlr_par.value = tz;
}
Código PHP
echo('<tr>');
echo('<td><div style="width:165px; float:left;">Item<input type="text" value="'.$prod['descricao'].'" name="item_2" style="width:150px "></div></td>');
echo('<td><div style="width:113px; float:left;">Quantidade<input type="text" onblur="calcula_2();" value="'.$qnt.'" name="qnt_2" id="qnt_2" style="width:100px "></div></td>');
echo('<td><div style="width:113px; float:left;">Preço<input type="text" onblur="calcula_2();" value="'.$prod['preco_v'].'" name="vlr_2" id="vlr_2" style="width:100px "></div></td>');
echo('<td><div style="width:113px; float:left;">Valor Total<input type="text" value="'.number_format($qnt*$prod['preco_v'],2,",",".").'" onblur="calcula_2();" name="vlritem_2" id="vlritem_2" style="width:100px "></div></td>');
echo('</tr>');
Ele esta em uma pagina externa, que é chamada quando eu clico.
Os valores somados são fornecidos nessa parte do html
<td width="678">
<input type="text" id="desconto" style="width:100px !important;" name="desconto" onload="calcula_desc();" value="<?= $x['desconto']?>" autocomplete="off" />
</td>
</tr>
<tr>
<td width="114">
<span class="tam">Valor Total: </span>
</td>
<td width="678">
<input type="text" id="total" style="width:100px !important;" name="total" value="<?php echo $x['total'];?>" onload="calcula_desc();" required autocomplete="off" />
</td>
Esse código não é meu, estou tentando resolver os problemas dele para poder fazer o programa funcionar,
Coloca seu código aqui