Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Tenho um código que ao eu inserir o produto e a quantidade ele automaticamente quando estou prrenchendo o campo ja vai me calculando os valores em subtotal e total.
Porem ele mantem os valores de frete e desconto apenas da primeira linha, quando eu insiro uma linha nova ("tem um botão de inserir campo") ele nao muda os valores.
Como faço para ele pegar o campo correto?
Tente adicionar dois registros e depois apagar o frete da segunda linha ou adicionar outra diferente.
Esta muito dificil isso para mim e olha que nem comecei a fazer os calculos ainda direito.
Agradeço toda a ajuda que puderem me dar.
<%call verifica_vendedores()%>
<script type="text/javascript">
//Total máximo de campos que você permitirá criar em seu site:
var totalCampos = 30;
//Não altere os valores abaixo, pois são variáveis controle;
var iLoop = 1;
var iCount = 1;
var linhaAtual;
function AddCampos() { if (iCount < totalCampos) {
var objTr = document.getElementById("linha"+iCount);
objTr.style.display = "";
iCount++;
}
}
function ResetCampos() { if (iCount > totalCampos) {
var objTr = document.getElementById("linha"-iCount);
objTr.style.display = "";
iCount--;
}
}
function somar(el) {
var objItem = document.getElementById("sel"+el);
var objQtde = document.getElementById("qtde"+el);
var objVunit = document.getElementById("vUnit"+el);
var objVtot = document.getElementById("vTot"+el);
var SubTot = document.getElementById("subTotal");
var objFrete = document.getElementById("frete");
var objDesc = document.getElementById("decapagem");
var objTotal = document.getElementById("total");
if (objItem.value != "") {
objVunit.value = objItem.value;
var total = (parseFloat(objItem.value)*parseFloat(objQtde.value)+parseFloat(objDesc.value)+parseFloat(objFrete.value));
objVtot.value = total.toFixed(2);
}else{
objVunit.value = "0.00";
objVtot.value = "0.00";
}
var calcSubTotal = 0;
for (iC = 1; iC<=totalCampos; iC++) {
calcSubTotal += parseFloat(document.getElementById("vTot"+iC).value);
}
SubTot.value = calcSubTotal.toFixed(2);
calcTotal = (calcSubTotal);
objTotal.value = calcTotal.toFixed(2);
}
</script>
</head>
<body>
<form name="form1" action="paginaPHPouASP" method="post">
<table border="0">
<tr>
<td width="200px">Produto</td>
<td width="100px">Quantidade</td>
<td width="100px">Preço de Tabela</td>
<td width="100px">SubTotal</td>
<td width="100px">Corte + Dec</td>
<td width="100px">Frete</td>
</tr>
<script type="text/javascript">for (iLoop = 1; iLoop <= totalCampos; iLoop++) {
var linha = "";
if (iLoop <=1) {
visualizar = ""; visualizar = "none";
}
linha += "<tr id='linha"+iLoop+"' style='display:"+visualizar+"'>";
linha += "<td width='200px'>";
linha += "<select id='sel"+iLoop+"' onchange='somar("+iLoop+")'>";
linha += "<option value=''>---</option>";
linha += "<option value='2650.00'>FQ.01</option>";
linha += "<option value='2480.00'>FQ.02</option>";
linha += "<option value='3300.00'>FQ.06</option>";
linha += "<option value='3200.00'>FQ.07</option>";
linha += "<option value='2750.00'>FQ.08</option>";
linha += "</select>";
linha += "</td>";
linha += "<td width='100px'>";
linha += "<select id='qtde"+iLoop+"' onchange='somar("+iLoop+")'><option value='0'>0</option><option value='1'>1</option><option value='2'>2</option><option value='3'>3</option><option value='4'>4</option><option value='5'>5</option></select>";
linha += "</td>";
linha += "<td width='100px'>";
linha += "<input type='text' id='vUnit"+iLoop+"' readonly='readonly' value='0.00'>";
linha += "</td>";
linha += "<td width='100px'>";
linha += "<input type='text' id='vTot"+iLoop+"' readonly='readonly' value='0.00'>";
linha += "</td>";
linha += "<td><input type='text' name='decapagem' id='decapagem' value='35.00' onkeyup='somar("+iLoop+")'></td>";
linha += "<td><input type='text' name='frete' id='frete' value='50.00' onkeyup='somar("+iLoop+")'></td>";
linha += "<td><input type='button' value='Remover campo' onclick='RemoverCampos("+iLoop+")'></td>";
linha += "</tr>";
document.write (linha);
}
function RemoverCampos(id) {//Pegar o valor do campo que será excluído:
var campoValor = document.getElementById("decapagem").value;
//Se o campo não tiver nenhum valor, atribuir a string: vazio:
if (campoValor == "") {
campoValor = "vazio";
}
{
document.getElementById("linha"+id).style.display = "none"; iCount--;
//Removendo o valor de hidden1:
if (hidden1.value.indexOf(",linha"+id) != -1) {
hidden1.value = hidden1.value.replace(",linha"+id,"");
}else if (hidden1.value.indexOf("linha"+id+",") == 0) {
hidden1.value = hidden1.value.replace("linha"+id+",","");
}else{
hidden1.value = "";
}
}
}
</script>
<tr>
<td> </td>
<td> </td>
<td>Sub-total:</td>
<td><input type="text" id="subTotal" readonly='readonly' value="0.00"></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td>Total:</td>
<td><input type="text" id="total" readonly='readonly' value="0.00"></td>
</tr>
</table>
<input type="button" value="Adicionar campos" onClick="AddCampos()">
<input type="hidden" name="hidden2" id="hidden2">
<br><br>
<br><br>
</form>Faça o seguinte.
Selecione um produto e coloque a quantidade.
Depois adicione um item novo e selecione outro produto e outra quantidade.
Depois coloque 0(zero) em frete no segundo produto. Veja que nao muda o valor deste sub item no segundo produto.
Aqui não apareceu nenhum produto. =X
Posta o link.
http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
é intranet thiago nao tem como passar link.
eu peguei o código ai e salvei como html.
e funcionou.
você salvou com que extensão?
Com .html.
Faz o seguinte. Me explica melhor o que é para acontecer. Eu não entendi a parte do frete. Não é para deixar com ele?
http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
Sim é pra deixar mas ele esta exibindo só da primeira linha no calculo.
se eu adiciono uma linha nova ele se perde e nao calcula dessa linha se eu mudar na mao o frete ou zerar ele?
alias caso seja NaN tem que ser igual a zero e nao fica zerado.
outra coisa.
coloquei um botão de excluir linhas mas ele se perde tambem quando eu apago o primeiro registro.
Estou copiando denovo o código.
Salve-o como .html
<script type="text/javascript">
//Total máximo de campos que você permitirá criar em seu site:
var totalCampos = 30;
//Não altere os valores abaixo, pois são variáveis controle;
var iLoop = 1;
var iCount = 1;
var linhaAtual;
function AddCampos() { if (iCount < totalCampos) {
var objTr = document.getElementById("linha"+iCount);
objTr.style.display = "";
iCount++;
}
}
function ResetCampos() { if (iCount > totalCampos) {
var objTr = document.getElementById("linha"-iCount);
objTr.style.display = "";
iCount--;
}
}
function somar(el) {
var objItem = document.getElementById("sel"+el);
var objQtde = document.getElementById("qtde"+el);
var objVunit = document.getElementById("vUnit"+el);
var objVtot = document.getElementById("vTot"+el);
var SubTot = document.getElementById("subTotal");
var objFrete = document.getElementById("frete");
var objDesc = document.getElementById("decapagem");
var objTotal = document.getElementById("total");
//alert(1+(45-45)/30*(1.5/100)*0.82/(1-(0.82))/9.99)*10;
if (objItem.value != "") {
objVunit.value = objItem.value;
var total = (parseFloat(objItem.value)*parseFloat(objQtde.value)+parseFloat(objDesc.value)+parseFloat(objFrete.value));
objVtot.value = total.toFixed(2);
}else{
objVunit.value = "0.00";
objVtot.value = "0.00";
}
var calcSubTotal = 0;
for (iC = 1; iC<=totalCampos; iC++) {
calcSubTotal += parseFloat(document.getElementById("vTot"+iC).value);
}
SubTot.value = calcSubTotal.toFixed(2);
calcTotal = (calcSubTotal);
objTotal.value = calcTotal.toFixed(2);
}
</script>
</head>
<body>
<form name="form1" action="paginaPHPouASP" method="post">
<table border="0">
<tr>
<td width="200px">Produto</td>
<td width="100px">Quantidade</td>
<td width="100px">Preço de Tabela</td>
<td width="100px">SubTotal</td>
<td width="100px">Corte + Dec</td>
<td width="100px">Frete</td>
</tr>
<script type="text/javascript">for (iLoop = 1; iLoop <= totalCampos; iLoop++) {
var linha = "";
if (iLoop <=1) {
visualizar = ""; visualizar = "none";
}
linha += "<tr id='linha"+iLoop+"' style='display:"+visualizar+"'>";
linha += "<td width='200px'>";
linha += "<select id='sel"+iLoop+"' onchange='somar("+iLoop+")'>";
linha += "<option value=''>---</option>";
linha += "<option value='2650.00'>FQ.01</option>";
linha += "<option value='2480.00'>FQ.02</option>";
linha += "<option value='3300.00'>FQ.06</option>";
linha += "<option value='3200.00'>FQ.07</option>";
linha += "<option value='2750.00'>FQ.08</option>";
linha += "</select>";
linha += "</td>";
linha += "<td width='100px'>";
linha += "<select id='qtde"+iLoop+"' onchange='somar("+iLoop+")'><option value='0'>0</option><option value='1'>1</option><option value='2'>2</option><option value='3'>3</option><option value='4'>4</option><option value='5'>5</option></select>";
linha += "</td>";
linha += "<td width='100px'>";
linha += "<input type='text' id='vUnit"+iLoop+"' readonly='readonly' value='0.00'>";
linha += "</td>";
linha += "<td width='100px'>";
linha += "<input type='text' id='vTot"+iLoop+"' readonly='readonly' value='0.00'>";
linha += "</td>";
linha += "<td><input type='text' name='decapagem' id='decapagem' value='35.00' onkeyup='somar("+iLoop+")'></td>";
linha += "<td><input type='text' name='frete' id='frete' value='50.00' onkeyup='somar("+iLoop+")'></td>";
linha += "<td><input type='button' value='Remover campo' onclick='RemoverCampos("+iLoop+")'></td>";
linha += "</tr>";
document.write (linha);
}
function RemoverCampos(id) {//Pegar o valor do campo que será excluído:
var campoValor = document.getElementById("decapagem").value;
//Se o campo não tiver nenhum valor, atribuir a string: vazio:
if (campoValor == "") {
campoValor = "vazio";
}
{
document.getElementById("linha"+id).style.display = "none"; iCount--;
//Removendo o valor de hidden1:
if (hidden1.value.indexOf(",linha"+id) != -1) {
hidden1.value = hidden1.value.replace(",linha"+id,"");
}else if (hidden1.value.indexOf("linha"+id+",") == 0) {
hidden1.value = hidden1.value.replace("linha"+id+",","");
}else{
hidden1.value = "";
}
}
}
</script>
<tr>
<td> </td>
<td> </td>
<td>Sub-total:</td>
<td><input type="text" id="subTotal" readonly='readonly' value="0.00"></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td>Total:</td>
<td><input type="text" id="total" readonly='readonly' value="0.00"></td>
</tr>
</table>
<input type="button" value="Adicionar campos" onClick="AddCampos()">
<input type="button" value="Remover campo" onclick="RemoverCampos('+iLoop+')">
<input type="hidden" name="hidden2" id="hidden2">
<br><br>
<br><br>
</form>
</body>
</html>não sei mais oque fazer nesse sistema.
ele vai ter uma integração tb trazendo os valores para o javascript de um banco de dados MySql com ASP
segue solução :
sistema ótimo para quem quiser algo dinamico em javascript. até deleta registros.
mas agora falta o asp....
<%call verifica_vendedores()%>
<script type="text/javascript">
//Total máximo de campos que você permitirá criar em seu site:
var totalCampos = 30;
//Não altere os valores abaixo, pois são variáveis controle;
var iLoop = 1;
var iCount = 1;
var linhaAtual;
function AddCampos() { if (iCount < totalCampos) {
var objTr = document.getElementById("linha"+iCount);
objTr.style.display = "";
iCount++;
}
}
function ResetCampos() { if (iCount > totalCampos) {
var objTr = document.getElementById("linha"-iCount);
objTr.style.display = "";
iCount--;
}
}
function somar(el) {
var objItem = document.getElementById("sel"+el);
var objQtde = document.getElementById("qtde"+el);
var objVunit = document.getElementById("vUnit"+el);
var objCliente = document.getElementById("vCliente"+el);
var objVtot = document.getElementById("vTot"+el);
var SubTot = document.getElementById("subTotal"+el);
var objFrete = document.getElementById("frete"+el);
var objDesc = document.getElementById("decapagem"+el);
var objTotal = document.getElementById("total"+el);
if ((objQtde.value >= 1) && (objQtde.value < 5)){
parseFloat(objCliente.value).toFixed(2);
objCliente.value = "2720.00"
}
if ((objQtde.value >= 5) && (objQtde.value < 10)){
parseFloat(objCliente.value).toFixed(2);
objCliente.value = "2400.00"
}
//alert(1+(45-45)/30*(1.5/100)*0.82/(1-(0.82))/9.99)*10;
if (objItem.value != "") {
objVunit.value = objItem.value;
var total = (parseFloat(objItem.value)*parseFloat(objQtde.value)+parseFloat(objDesc.value)+parseFloat(objFrete.value));
objVtot.value = total.toFixed(2);
}else{
objVunit.value = "0.00";
objVtot.value = "0.00";
}
var calcSubTotal = 0;
for (iC = 1; iC<=totalCampos; iC++) {
calcSubTotal += parseFloat(document.getElementById("vTot"+iC).value);
}
SubTot.value = calcSubTotal.toFixed(2);
calcTotal = (calcSubTotal);
objTotal.value = calcTotal.toFixed(2);
}
</script>
</head>
<body>
<form name="form1" action="" method="post">
<script type="text/javascript">
var linha2 = "";
linha2 += "<table width='980' border='0'>";
linha2 += "<tr>";
linha2 += "<td width='100px'>Produto</td>";
linha2 += "<td width='100px'>Quantidade</td>";
linha2 += "<td width='100px'>Preço de Tabela</td>";
linha2 += "<td width='100px'>Preço do Cliente</td>";
linha2 += "<td width='100px'>Corte + Dec</td>";
linha2 += "<td width='100px'>Frete</td>";
linha2 += "<td width='100px'>Total Produto</td>";
linha2 += "<td width='100px'></td>";
linha2 += "<td width='100px'></td>";
linha2 += "<td width='80px'></td>";
linha2 += "</tr>";
linha2 += "</table>";
document.write (linha2);
</script>
<script type="text/javascript">for (iLoop = 1; iLoop <= totalCampos; iLoop++) {
var linha = "";
if (iLoop <=1) {
visualizar = ""; visualizar = "none";
}
linha += "<table width='980' border='0'>";
linha += "<tr id='linha"+iLoop+"' style='display:"+visualizar+"'>";
linha += "<td width='100px'>";
linha += "<select id='sel"+iLoop+"' onchange='somar("+iLoop+")'>";
linha += "<option value=''>---</option>";
linha += "<option value='2650.00'>FQ.01</option>";
linha += "<input type='hidden' name='mercado' id='mercado' value='2'>";
linha += "<option value='2480.00'>FQ.02</option>";
linha += "<option value='3300.00'>FQ.06</option>";
linha += "<option value='3200.00'>FQ.07</option>";
linha += "<option value='2750.00'>FQ.08</option>";
linha += "</select>";
linha += "</td>";
linha += "<td width='100px'>";
linha += "<input type='text' id='qtde"+iLoop+"' onkeyup='somar("+iLoop+");' size='3' value='1'>";
linha += "</td>";
linha += "<td width='100px'>";
linha += "<input type='text' size='7' id='vUnit"+iLoop+"' readonly='readonly' value='0.00'>";
linha += "</td>";
linha += "<td width='100px'>";
linha += "<input type='text' size='7' id='vCliente"+iLoop+"' readonly='readonly' value='0.00'>";
linha += "</td>";
linha += "<td width='100px'><input type='text' size='5' name='decapagem"+iLoop+"' id='decapagem"+iLoop+"' value='35.00' onkeyup='somar("+iLoop+")'></td>";
linha += "<td width='100px'><input type='text' size='5' name='frete"+iLoop+"' id='frete"+iLoop+"' value='50.00' onkeyup='somar("+iLoop+")'></td>";
linha += "<td width='100px'>";
linha += "<input type='text' size='8' id='vTot"+iLoop+"' readonly='readonly' value='0.00'>";
linha += "</td>";
linha += "<td width='100px'><input type='text' size='8' id='subTotal' readonly='readonly' value='0.00'></td>";
linha += "<td width='100px'><input type='text' size='8' id='total' readonly='readonly' value='0.00'></td>";
linha += "<td width='80px'><input type='button' value='X' onclick='RemoverCampos("+iLoop+")'></td>";
linha += "</tr>";
linha += "</table>";
document.write (linha);
}
function RemoverCampos(id) {//Pegar o valor do campo que será excluído:
var campoValor = document.getElementById("linha"+id).value;
//Se o campo não tiver nenhum valor, atribuir a string: vazio:
if (campoValor == "") {
campoValor = "vazio";
}
{
document.getElementById("linha"+id).style.display = "none"; iCount--;
//Removendo o valor de hidden1:
if (hidden1.value.indexOf(",linha"+id) != -1) {
hidden1.value = hidden1.value.replace(",linha"+id,"");
}else if (hidden1.value.indexOf("linha"+id+",") == 0) {
hidden1.value = hidden1.value.replace("linha"+id+",","");
}else{
hidden1.value = "";
}
}
}</script>
<input type="button" value="Adicionar campos" onClick="AddCampos()">
<input type="hidden" name="hidden2" id="hidden2">
<br><br>
<br><br>
</form>
Não entendi o seu problema...
Testei aqui seu código, mas nada deu para fazer...
http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif