Ir para conteúdo

POWERED BY:

Arquivado

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

PRWEB

Somar campos

Recommended Posts

Então, quando eu faço o calculo de quantidade * v_unitario = v_total ele tem que aparecer o valor do campo v_total no campo sub_total e se acrescentado mais 1 registro ele mantei o valor do primeiro registro e faz a soma com o 2.º registro:

 

quant | v_unitario | v_total

1.º registro: 2 2.00 4.00

2.º registro: 5 1.00 5.00

e ai por diante, somar todos os registros que forem colocados, ai tem em baixo o campo:

sub_total: 9.00

outros: 10.00

custo_envio:19.00

total_geral:38.00

É assim que preciso que funcione.

 

Muito Obrigado,

 

:unsure:/>

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas dá onde vem esse campos

outros: 10.00

custo_envio:19.00

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

function somaCampos(){
		var qtdeCampos = document.getElementById("qtdeCampos").value;
		var custoEnvio = parseFloat(document.getElementById("custo_envio").value);
		var outros = parseFloat(document.getElementById("outros").value);
		var soma = 0;
		for(i=1;i<=qtdeCampos;i++){
				valor = document.getElementById("val"+i).value == "" ? 0 : parseFloat(document.getElementById("val"+i).value);
				soma += valor;
		}
		document.getElementById("sub_total").value=soma;
		var totalGeral = soma+custoEnvio+outros;
		document.getElementById("valTotal").value=totalGeral;
}

se se agora funciona ai

 

abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se o usuário acabou de preencher 20 itens, e resolve acrescentar mais um... todos os itens terão seus valores zerados??

 

Parece que o form é zerado quando ao clicar no sinal de + (Clique aqui no + para adicionar mais registros). Se houver vários itens e o usuário resolver acrescentar mais um... ele passará muita raiva...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por favor, só da uma analisade para ver se da certo

 

Coloquei um hidden: <input name="qtdeCampos" id="qtdeCampos" type="hidden" size="5"> e outro para saber quantos registros tem: <input name="id_<%=i%>" type="hidden" class="style146" id="id_<%=i%>" value="<%=gerar_os_itens("id")%>" size="5">

 

e ai tem a função:

 

function ponto_dec(N){        
 texto = N.value.toString();
 texto2 = "";
 if (texto.indexOf('.') != -1)
 {
   for (var i = 0; i < texto.length; i++)
   {
     if(texto.charAt(i) == ".")
      texto2 += ".";
     else
      texto2 += texto.charAt(i);
   }
   texto = texto2;
  }

 //texto[texto.indexOf(',')] = ".";
 ponto = texto.indexOf('.');

 if (ponto == -1)
 {
   texto += ".00";
   Term = texto;
 }
 else
 {
   texto += "0";
   decimal = ponto + 3;
   Term = texto.substring(0,decimal);
 }

 if (Term == "0.0")
  Term = "0.00";

 if (Term == ".00")
  Term = "0.00";

return Term;
//N.value = Term;
}

function total1(campo1,campo2,campo3)
{
 var sub_total = 0;
 
 //Igualando campos sem e com acréscimo
 campo2.value = ponto_dec(campo2);
 campo3.value = campo2.value;
 
 //Pré total
 campo3.value = campo1.value * campo2.value; 
 campo3.value = ponto_dec(campo3); 
 
 //Cálculo do sub_total
 for (i=1;i<=i;i++)
 sub_total = sub_total + parseFloat(document.getElementById('v_total_' + String(i)).value);

 document.myForm.sub_total.value = sub_total;
 document.myForm.sub_total.value = ponto_dec(document.myForm.sub_total);
 
 //Cálculo do total geral
 document.myForm.total_geral.value = parseFloat(document.myForm.sub_total.value) + parseFloat(document.myForm.custo_envio.value) + parseFloat(document.myForm.outros.value);
 document.myForm.total_geral.value = ponto_dec(document.myForm.total_geral); 
}

function total_geral1()
{
	
	document.myForm.total_geral.value = parseFloat(document.myForm.sub_total.value) + parseFloat(document.myForm.custo_envio.value) + parseFloat(document.myForm.outros.value);
 
 document.myForm.total_geral.value = ponto_dec(document.myForm.total_geral);
 document.myForm.custo_envio.value = ponto_dec(document.myForm.custo_envio);
 document.myForm.outros.value = ponto_dec(document.myForm.outros);

//Novo total
	for (i=1;i<=i;i++)
	{
 		document.getElementById('v_total_' + String(i)).value = parseFloat(document.getElementById('quant_' + String(i)).value);
		document.getElementById('v_total_' + String(i)).value = ponto_dec(document.getElementById('v_total_' + String(i)))

//Sub_total
	for (i=1;i<=i;i++)
 	sub_total = sub_total + parseFloat(document.getElementById('v_total_' + String(i)).value);
	
 	document.myForm.sub_total.value = sub_total; 
	document.myForm.sub_total.value = ponto_dec(document.myForm.sub_total);

//Total geral
	total_geral1();
}
}

function somaCampos(){
                var qtdeCampos = document.getElementById("qtdeCampos").value;
                var custoEnvio = parseFloat(document.getElementById("custo_envio").value);
                var outros = parseFloat(document.getElementById("outros").value);
                var soma = 0;
                for(i=1;i<=qtdeCampos;i++){
                                valor = document.getElementById("val"+i).value == "" ? 0 : parseFloat(document.getElementById("val"+i).value);
                                soma += valor;
                }
                document.getElementById("sub_total").value=soma;
                var totalGeral = soma+custoEnvio+outros;
                document.getElementById("valTotal").value=totalGeral;
}

Muito Obrigado pela ajuda que está sendo dada.

 

:unsure:/>

Compartilhar este post


Link para o post
Compartilhar em outros sites

PRWEB tem muita coisa errada no seu código e pelo que percebi, você não está escrevendo código algum

 

sugiro que dê uma procurada aqui mesmo no forum e tente re-fazer todo o seu código

 

abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu levantei essa situação porque eu já havia me deparado com isso há alguns meses.

 

A solução para impedir que os campos fossem apagados foi:

Já deixar criado vários campos ocultos (com display:none), que seriam exibidos ao se clicar no botão: Adicionar campo. Esses campos seriam criados a partir de um loop, e receberiam ids sequenciais, como: id_1, id_2, id_3... ou algo semelhante.

 

Entretanto, o número de campos que serão criados é limitado ou pré-definido. Por isso perguntei antes se havia limite de campos para serem criados. Se fosse, seria mais fácil adaptar o código ao seu problema.

 

 

Para exemplificar, deixo o link do tópico:

http://forum.imasters.com.br/index.php?/topic/325267-adicionar-remover-campos-dinamicamente/page__view__findpost__p__1331386

 

 

--------- Tópico Editado ---------

Apenas para resolver esse assunto de uma vez por todas, fiz o código para você ver como funciona:

<html>
<head>
<script type="text/javascript">
//Total máximo de campos que você permitirá criar em seu site:
var totalCampos = 20;

//Não altere os valores abaixo, pois são variáveis controle;
var iLoop = 1;
var iCount = 6;
var linhaAtual;


function AddCampos() {
//Executar apenas se houver possibilidade de inserção de novos campos:
	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("descontos");
var objTotal = document.getElementById("total");

	if (objItem.value != "") {
		objVunit.value = objItem.value;
		var total = (parseFloat(objItem.value)*parseFloat(objQtde.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+parseFloat(objFrete.value)+parseFloat(objDesc.value));
objTotal.value = calcTotal.toFixed(2);
}
</script>
</head>
<body>
<form name="form1" action="paginaPHPouASP" method="post">
<table border="0">
<tr>
	<td width="200px">Itens</td>
	<td width="100px">Quantidade</td>
	<td width="100px">Valor unitário</td>
	<td width="100px">Valor total</td>
</tr>


<script type="text/javascript">
//Escrevendo o código-fonte HTML e ocultando os campos criados:
for (iLoop = 1; iLoop <= totalCampos; iLoop++) {
var linha = "";
if (iLoop <=5) {
	visualizar = "";
} else {
	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='5.00'>Faca de mesa</option>";
	linha += "<option value='2.00'>Garfo simples</option>";
	linha += "<option value='1.30'>Colher de sopa</option>";
	linha += "<option value='6.30'>Alicate 13cm</option>";
	linha += "<option value='19.40'>Bule porcelana</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 += "</tr>";	

document.write (linha);
}
</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>Frete:</td>
	<td><input type="text" id="frete" readonly='readonly' value="10.00"></td>
</tr>
<tr>
	<td> </td>
	<td> </td>
	<td>Descontos:</td>
	<td><input type="text" id="descontos" 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()">
<br><br>
<br><br>
</form>

</body>
</html>

Chega de enrolação, né?!

Testado no IE7, FF 3.0.15

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde, tudo bem?

 

Gostei muito da função!

 

Só que como eu faço para gravar tudo?

 

Pq eu utilizo 1 icone q chama 1 pagina q grava 1 registro e vou incrementando 1 registro por vez.

 

Muito Obrigado,

 

:unsure:/>

Compartilhar este post


Link para o post
Compartilhar em outros sites

A linguagem server-side agora que irá ficar responsável por isso. Você pode criar loops, ou fazer da maneira que achar melhor... Qual linguagem você está utilizando? ASP, PHP, ASP.net, Cold Fusion?

 

Eu ou outro moderador iremos mover o tópico para a linguagem correta assim que você informar qual.

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tópico Movido:

Javascript / DTML http://forum.imasters.com.br/public/style_emoticons/default/seta.gif/> ASP

Compartilhar este post


Link para o post
Compartilhar em outros sites

porfavor descreva o k realmente necessita...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia tudo bem?

 

Preciso muito fazer funcionar este código que está abaixo:

 

function ponto_dec(N){

texto = N.value.toString();

texto2 = "";

if (texto.indexOf('.') != -1)

{

for (var i = 0; i < texto.length; i++)

{

if(texto.charAt(i) == ".")

texto2 += ".";

else

texto2 += texto.charAt(i);

}

texto = texto2;

}

 

//texto[texto.indexOf(',')] = ".";

ponto = texto.indexOf('.');

 

if (ponto == -1)

{

texto += ".00";

Term = texto;

}

else

{

texto += "0";

decimal = ponto + 3;

Term = texto.substring(0,decimal);

}

 

if (Term == "0.0")

Term = "0.00";

 

if (Term == ".00")

Term = "0.00";

 

return Term;

//N.value = Term;

}*/

 

function total1(campo1,campo2,campo3)

{

var sub_total = 0;

 

//Igualando campos sem e com acréscimo

campo2.value = ponto_dec(campo2);

campo3.value = campo2.value;

 

//Pré total

campo3.value = campo1.value * campo2.value;

campo3.value = ponto_dec(campo3);

 

//Cálculo do sub_total

for (i=1;i<=i;i++)

sub_total = sub_total + parseFloat(document.getElementById('v_total_' + String(i)).value);

 

document.myForm.sub_total.value = sub_total;

document.myForm.sub_total.value = ponto_dec(document.myForm.sub_total);

 

//Cálculo do total geral

document.myForm.total_geral.value = parseFloat(document.myForm.sub_total.value) + parseFloat(document.myForm.custo_envio.value) + parseFloat(document.myForm.outros.value);

document.myForm.total_geral.value = ponto_dec(document.myForm.total_geral);

}

 

function total_geral1()

{

 

document.myForm.total_geral.value = parseFloat(document.myForm.sub_total.value) + parseFloat(document.myForm.custo_envio.value) + parseFloat(document.myForm.outros.value);

 

document.myForm.total_geral.value = ponto_dec(document.myForm.total_geral);

document.myForm.custo_envio.value = ponto_dec(document.myForm.custo_envio);

document.myForm.outros.value = ponto_dec(document.myForm.outros);

 

//Novo total

for (i=1;i<=i;i++)

{

document.getElementById('v_total_' + String(i)).value = parseFloat(document.getElementById('quant_' + String(i)).value);

document.getElementById('v_total_' + String(i)).value = ponto_dec(document.getElementById('v_total_' + String(i)))

 

//Sub_total

for (i=1;i<=i;i++)

sub_total = sub_total + parseFloat(document.getElementById('v_total_' + String(i)).value);

 

document.myForm.sub_total.value = sub_total;

document.myForm.sub_total.value = ponto_dec(document.myForm.sub_total);

 

//Total geral

total_geral1();

}

}

 

function somaCampos(){

var qtdeCampos = document.getElementById("qtdeCampos").value;

var custoEnvio = parseFloat(document.getElementById("custo_envio").value);

var outros = parseFloat(document.getElementById("outros").value);

var soma = 0;

for(i=1;i<=qtdeCampos;i++){

valor = document.getElementById("id"+i).value == "" ? 0 : parseFloat(document.getElementById("id"+i).value);

soma += valor;

}

document.getElementById("sub_total").value=soma;

var totalGeral = soma+custoEnvio+outros;

document.getElementById("total_geral").value=totalGeral;

}

 

Só que é o seguinte:

 

Nesta página Clique aqui você vai ver que quando clicar no Botão + para adicionar mais campos eu preciso que quando eu digitar a quantidade e o valor unitário ele da o valor total e subtotal e total geral conforme o exemplo no link.

 

Não sei mais o que fazer, já tentei de tudo.

 

Fico muito agradecido pela ajuda.

 

Obrigado,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gostei desse código e me ajudou bastante aqui na minha aplicação por ser dinamica.

Porem como faço para remover uma linha especifica de um produto.

Vi que posso adcionar novo produto mas quero tambem poder deletar uma linha que eu selecionar.

Como faço?

 

alguem poderia me ajudar nessa questão?

 

Alguem poderia me ajudar na duvida do post acima?

preciso pelo menos de uma luz.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mario, o código que eu tinha deixado era oque eu adaptei no meu sistema.

Quando voce removeu ninguem pode ver oque eu fiz.

Coloquei o Excluir mas o sistema esta se perdendo nos registros.

 

Veja abaixo:

 

<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() {
//Executar apenas se houver possibilidade de inserção de novos campos:
        if (iCount < totalCampos) {
         var objTr = document.getElementById("linha"+iCount);
         objTr.style.display = "";
         iCount++;
        }
}

function ResetCampos() {
//Executar apenas se houver possibilidade de inserção de novos campos:
        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");
var objFrete = document.getElementById("frete");
var objDesc = document.getElementById("decapagem");
var objTotal = document.getElementById("total");



		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">
<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">Preço do Cliente</td>
        <td width="100px">Corte + Dec</td>
        <td width="100px">Frete</td>
        <td width="100px">Total Produto</td>
</tr>
<script type="text/javascript">
//Escrevendo o código-fonte HTML e ocultando os campos criados:
for (iLoop = 1; iLoop <= totalCampos; iLoop++) {
var linha = "";
if (iLoop <=1) {
        visualizar = "";
} else {
        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 += "<input type='text' id='qtde"+iLoop+"' onkeyup='somar("+iLoop+");' size='3' value='1'>";
        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='vCliente"+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 width='100px'>";
        linha += "<input type='text' id='vTot"+iLoop+"' readonly='readonly' value='0.00'>";
        linha += "</td>";
		linha += "<td><input type='button' value='X' onclick='RemoverCampos("+iLoop+")'></td>";
        linha += "</tr>";       

document.write (linha);
}


function RemoverCampos(id) {
//Criando ponteiro para hidden1:        
var hidden1 = document.getElementById("decapagem");

//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>

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.