marvi Postado Novembro 26, 2008 Denunciar Share Postado Novembro 26, 2008 Pessoal, estou tentando obter um script que multiplique os valores que for digitado em um campo do formulário em R$ (real)Encontrei esse, mas não faz cálculos em moedas:<script language="javascript"> function Calcula(){ var Parametro1=document.frm.EditValor.value; var Parametro2=document.frm.EditTaxa.value; var Soma=((parseFloat(Parametro1))*(parseFloat(Parametro2))); document.frm.EditValorTotal.value=Soma; } </script> <body> <form name="frm"> <input type="text" name="EditValor" onKeyUp="Calcula()" size="20" style="border: 1px solid #808080"><BR> <input type="text" name="EditTaxa" onKeyUp="Calcula()" size="20" style="border: 1px solid #808080"><BR><BR> total:<input type="text" name="EditValorTotal" size="20" style="border: 1px solid #FFFFFF"><BR><BR> </form>Alguém sabe um script que possa fazer multiplicação em moedas? Tipo: 12,80Obrigado!Marcelo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Novembro 26, 2008 Denunciar Share Postado Novembro 26, 2008 Cara, não entendi muito bem o que quer fazer...O que você quis dizer com:Alguém sabe um script que possa fazer multiplicação em moedas? Tipo: 12,80 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 marvi Postado Novembro 26, 2008 Autor Denunciar Share Postado Novembro 26, 2008 (editado) Tipo, no campo a pessoa digita 12,80 e no outro campo digita um numero para multiplicar, por exemplo 2 que dar o total de 25,6Exemplo:Campo 1: 2Campo 2: 12,80Total: 25,6 (pois 12,80 X 2 é 25,6)Igual o que esse script que mostrei acima faz... mas que ele considere as cadas decimais, algo assim para poder multiplicar tudo...entendeu? Editado Novembro 26, 2008 por marvi Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Novembro 26, 2008 Denunciar Share Postado Novembro 26, 2008 Tenta algo como:var Soma= parseFloat(eval(Parametro1 + "*" + Parametro2)) Ou, apenas: var Parametro1=eval(document.frm.EditValor.value); var Parametro2=eval(document.frm.EditTaxa.value); var Soma= Parametro1 * Parametro2 document.frm.EditValorTotal.value=Soma;Qualquer coisa, posta aí ! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 marvi Postado Novembro 26, 2008 Autor Denunciar Share Postado Novembro 26, 2008 Fiz o que você falou, mas está inconsistente os dados... se eu digitar um campo R$: 1,20 e no outro campo 2 ele mostra: 20E o certo é que 1,20 * 2 = 2,4 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 marvi Postado Novembro 26, 2008 Autor Denunciar Share Postado Novembro 26, 2008 Resolvir, segue uma solução com formatação, máscara e tudo:<script type="text/javascript"> addEvent = function(o, e, f, s) { var r = o[r = "_" + (e = "on" + e)] = o[r] || (o[e] ? [[o[e], o]] : []), a, c, d; r[r.length] = [f, s || o], o[e] = function(e){ try{ (e = e || event).preventDefault || (e.preventDefault = function(){e.returnValue = false;}); e.stopPropagation || (e.stopPropagation = function(){e.cancelBubble = true;}); e.target || (e.target = e.srcElement || null); e.key = (e.which + 1 || e.keyCode + 1) - 1 || 0; }catch(f){} for(d = 1, f = r.length; f; r[--f] && (a = r[f][0], o = r[f][1], a.call ? c = a.call(o, e) : (o._ = a, c = o._(e), o._ = null), d &= c !== false)); return e = null, !!d; } }; function formatCurrency(o, n, dig, dec) { o.c = !isNaN(n) ? Math.abs(n) : 2; o.dec = typeof dec != "string" ? "," : dec, o.dig = typeof dig != "string" ? "." : dig; addEvent(o, "keypress", function(e) { if (e.key > 47 && e.key < 58) { var o, s, l = (s = ((o = this).value.replace(/^0+/g, "") + String.fromCharCode(e.key)).replace(/\D/g, "")).length, n; if(o.maxLength + 1 && l >= o.maxLength) return false; l <= (n = o.c) && (s = new Array(n - l + 2).join("0") + s); for(var i = (l = (s = s.split("")).length) - n; (i -= 3) > 0; s[i - 1] += o.dig); n && n < l && (s[l - ++n] += o.dec); o.value = s.join(""); } e.key > 30 && e.preventDefault(); }); } function fmtMoney(n, c, d, t){ var m = (c = Math.abs(c) + 1 ? c : 2, d = d || ",", t = t || ".", /(\d+)(?:(\.\d+)|)/.exec(n + "")), x = m[1].length > 3 ? m[1].length % 3 : 0; return (x ? m[1].substr(0, x) + t : "") + m[1].substr(x).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + (+m[2] || 0).toFixed(c).substr(2) : ""); }; function soma() { var f = document.forms[0]; var valor1 = parseFloat(f.campo1.value.replace('.','').replace(',','.')); var valor2 = parseFloat(f.campo2.value=2); var valor3 = ('' + ((valor1||0) * (valor2||0))); f.campo3.value = fmtMoney(valor3); } function init() { formatCurrency(document.forms[0].campo1, 2, ".", ","); } window.onload = init; </script> <form> <input name="campo1" onkeyup="soma()" size="20" /> + <input name="campo2" onkeyup="soma()" size="20" /> = <input name="campo3" size="20" /> </form>Grato! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 marvi Postado Novembro 27, 2008 Autor Denunciar Share Postado Novembro 27, 2008 (editado) Pessoal, eu tenho um formulário dinâmico que pode ser gerado, multiplicado varias vezes, abaixo ele é multiplicado duas vezes através de um loop... Veja que a seção Item, está Item 1 e Item 2, essa seção gerou duas vezes no loop.Veja a figura:http://www.ideiabiz.com/testee.jpgVeja também que o Item 1 e o Item 2 tem um campo chamado Valor unitário, nesse campo a pessoa digita o valor do produto, no item 1 por exemplo tem digitado R$ 100,00 e logo abaixo tem um campo chamado valor total do item 1 que é 200,00 pois um pouco acima no campo unidades a pessoa digitou o número 2 acusando 2 produtos que cada um custa 100,00 que foi digitado no campo Valor unitário, como falei antes. Entendeu?Até aí tudo bem, o valor digitado no campo Valor unitário é multiplicado pela quantidade de unidades ou produtos digitados no campo Unidades.Isso funciona no item 2 também e assim vai, não importa quantos itens o usuário gerar...A questão é que quero saber como somar o campo valor total do item 1 com o valor total do item 2 para poder exibir lá no campo que fica no topo do formulário chamado Valor total da nota que está do lado de uma marca vermelha que deixei como referência, para acharem o campo. Como fazer isso?Abaixo segue a parte do código que já faz isso tudo que citei acima.<%for i=1 to session("qtitem") %> <script type="text/javascript"> function mascara(o,f){ v_obj=o v_fun=f setTimeout("execmascara()",1) } function execmascara(){ v_obj.value=v_fun(v_obj.value) } function mreais(v){ v=v.replace(/\D/g,"") //Remove tudo o que não é dígito v=v.replace(/(\d{2})$/,",$1") //Coloca a virgula v=v.replace(/(\d+)(\d{3},\d{2})$/g,"$1.$2") //Coloca o primeiro ponto return v } function fmtMoney(n, c, d, t){ var m = (c = Math.abs(c) + 1 ? c : 2, d = d || ",", t = t || ".", /(\d+)(?:(\.\d+)|)/.exec(n + "")), x = m[1].length > 3 ? m[1].length % 3 : 0; return (x ? m[1].substr(0, x) + t : "") + m[1].substr(x).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + (+m[2] || 0).toFixed(c).substr(2) : ""); }; function soma<%=i%>(){ var valortotalitem<%=i%> = document.getElementById('valortotalitem<%=i%>'); var valor<%=i%> = document.getElementById('valor<%=i%>'); var quantidadev<%=i%> = document.form.unidades<%=i%>.value; valortotalitem<%=i%>.value = parseFloat(valor<%=i%>.value.replace(',','.')) * quantidadev<%=i%>; valortotalitem<%=i%>.value = fmtMoney(valortotalitem<%=i%>.value); } </script> <tr> <td width="100%" colspan="2" height="16"> <font face="Verdana" style="font-size: 8pt" color="#2A2A2A">Valor unitário: </font> <input type="text" name="valor<%=i%>" id="valor<%=i%>" onkeypress="mascara(this,mreais)" onkeyup="soma<%=i%>()" size="27" style="font-family: Verdana; font-size: 10 px; color: #3A5278; border: 1px solid #3A5278; background-color:#EEEEEE" value="<%=request.form("valor"&i)%>"></td> </tr> <tr> <td width="100%" colspan="2" height="16"> <font face="Verdana" style="font-size: 8pt" color="#2A2A2A">Valor total do item <%=i%>: </font> <input type="text" name="valortotalitem<%=i%>" id="valortotalitem<%=i%>" size="19" style="font-family: Verdana; font-size: 10 px; color: #3A5278; border: 1px solid #3A5278; background-color:#EEEEEE" value="<%=request.form("valortotalitem"&i)%>"></td> </tr> </table> <%next%>Alguém sabe uma solução? é difícil isso? Editado Novembro 27, 2008 por marvi Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 marvi Postado Novembro 27, 2008 Autor Denunciar Share Postado Novembro 27, 2008 (editado) Pessoal, coloquei um exemplo na Internet para que vocês possam ver funcionando uns campos e possam também olhar o código acessando o código fonte do HTML, pois assim acho que vai ficar mais prática para que possam enteder.Acesse: http://www.ideiabiz.com/ok.htmVerá que lá tem duas linhas, cada uma com o campo horizontal. A pessoa digita qualquer valor em moeda R$ em um campo e ao mesmo tempo é multiplicado por 2 e exibido do lado o valor total dessa multiplicação. E assim vai, tem outra linha com outro campo abaixo que serve para mesma coisa... Até aí conseguir chegar. O que quero saber é como fazer com que o último campo some todos os campos que mostra o valor total dessa multiplicação acima dele?Veja que tem valor total 1 e valor total 2 e como fazer para somar valor total 1 mais valor total 2 e exibir no campo de valores totais abaixo?Obrigado!Marcelo Editado Novembro 27, 2008 por marvi Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Novembro 27, 2008 Denunciar Share Postado Novembro 27, 2008 É simples !Seria algo como:total = document.form.valor1.value + "+" + document.form.valor2.value + "+" + document.form.valor3.value + "+" + document.form.valor4.value total = eval(total) alert(total) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 marvi Postado Novembro 27, 2008 Autor Denunciar Share Postado Novembro 27, 2008 (editado) Não, está errado aí...Você está somando tudo! Eu quero só somar os resultados que são na verdade o valor final de uma multiplicação por 2, entendeu?Onde tem o campo valor total 1 e valor total 2 é exibido o valor da multiplicação por 2 digitada nos campos valor digitado em R$ 1 e valor digitado em R$ 2 e assim quero somar esses resultados e exibir no último campo abaixoVeja uma figura para ver se entende:Foi digitado 10,00 que multiplicou por 2 = 20,00novamente Foi digitado 10,00 que multiplicou por 2 = 20,00Quero a soma do resultado dessa multiplicação 20,00 + 20,00 = 40,00Como fazer isso?Resolvir, veja o htmlhttp://www.ideiabiz.com/ok.htmAgora se eu colocar em um loop isso não roda... porque?function soma<%=i%>(){ var valortotalitem<%=i%> = document.getElementById('valortotalitem<%=i%>'); var valor<%=i%> = document.getElementById('valor<%=i%>'); var quantidadev<%=i%> = document.form.unidades<%=i%>.value; valortotalitem<%=i%>.value = parseFloat(valor<%=i%>.value.replace(',','.')) * quantidadev<%=i%>; valortotalitem<%=i%>.value = fmtMoney(valortotalitem<%=i%>.value); window.onload=soma1() } function soma1(){ var valortotalitem<%=i%> = document.getElementById('valortotalitem<%=i%>') var campo6 = document.getElementById('campo6'); campo6.value = parseFloat(valortotalitem<%=i%>.value.replace(',','.')) campo6.value = fmtMoney(campo6.value); } </script> <tr> <td width="100%" colspan="2" height="16"> <font face="Verdana" style="font-size: 8pt" color="#2A2A2A">Valor unitário: </font> <input type="text" name="valor<%=i%>" id="valor<%=i%>" onkeypress="mascara(this,mreais)" onkeyup="soma<%=i%>()" onkeyup="soma1();" size="27" style="font-family: Verdana; font-size: 10 px; color: #3A5278; border: 1px solid #3A5278; background-color:#EEEEEE" value="<%=request.form("valor"&i)%>"></td> </tr> <tr> <td width="100%" colspan="2" height="16"> <font face="Verdana" style="font-size: 8pt" color="#2A2A2A">Valor total do item <%=i%>: </font> <input type="text" name="valortotalitem<%=i%>" id="valortotalitem<%=i%>" size="19" style="font-family: Verdana; font-size: 10 px; color: #3A5278; border: 1px solid #3A5278; background-color:#EEEEEE" value="<%=request.form("valortotalitem"&i)%>"></td> </tr> </table> <input type="text" id="campo6" readonly name="campo6" size="8" style="font-family: Verdana; font-size: 10 px; color: #3A5278; border: 1px solid #3A5278; background-color:#EEEEEE">ELe soma o total do item, mas não soma o total completo... Editado Novembro 27, 2008 por marvi Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 marvi Postado Novembro 27, 2008 Autor Denunciar Share Postado Novembro 27, 2008 (editado) Não sei como fazer, mas queria saber se esse script tem como fazer isso:Veja que tem um loop onde esse valortotalitem é um campo do form e que vai se multiplicando de acordo com loop, se o loop for de for i=1 to 4, por exemplo, ele vai gerar 4 campos valortotalitem...Beleza, esse Loop é capaz de ir gerando os campos valortotalitem e contando com o <%=i%> para informar que são campos duplicados, mas com o Name do campo diferentes...Agora como fazer somar esses campos depois de o loop terminar? Cada campo gerado pelo loop a pessoa vai digitar em moeda R$ um valor, tipo 20,00 e se for dois loops serão dois campos digitados 20,00Campo valortotalitem1: 20,00Campovalortotalitem2: 20,00Aí eu estou chamando a função abaixo para somar esses campos com loops acima, veja:function soma<%=i%>(){ var valortotalitem<%=i%> = document.getElementById('valortotalitem<%=i%>'); var valor<%=i%> = document.getElementById('valor<%=i%>'); var quantidadev<%=i%> = document.form.unidades<%=i%>.value; valortotalitem<%=i%>.value = parseFloat(valor<%=i%>.value.replace(',','.')) * quantidadev<%=i%>; valortotalitem<%=i%>.value = fmtMoney(valortotalitem<%=i%>.value); window.onload=soma1<%=i%>() } function soma1<%=i%>(){ var valortotalitem<%=i%> = document.getElementById('valortotalitem<%=i%>') var campo6 = document.getElementById('campo6'); campo6.value = parseFloat(valortotalitem<%=i%>.value.replace(',','.')) + parseFloat(valortotalitem<%=i%>.value.replace(',','.')) campo6.value = fmtMoney(campo6.value); } </script> Mas o que acontece é que não funciona... acho que eu deveria ir guardando as informações dos campos gerados para somar tudo, tem como? uma idéia, mas não entendi bem... veja meu loop <%for i=1 to session("qtitem"%> function soma1<%=i%>(){ var valortotalitem<%=i%> = document.getElementById('valortotalitem<%=i%>') var campo6 = document.getElementById('campo6'); campo6.value = parseFloat(valortotalitem<%=i%>.value.replace(',','.')) + parseFloat(valortotalitem<%=i%>.value.replace(',','.')) campo6.value = fmtMoney(campo6.value); } <%next%> <input type="text" id="campo6" readonly name="campo6" size="8" style="font-family: Verdana; font-size: 10 px; color: #3A5278; border: 1px solid #3A5278; background-color:#EEEEEE"> Só que ele faz soma do próprio campo e não do outro campo que foi gerado pelo loop... Se gerou 2 loops então: campo 1 = 20,00 campo 2 = 15,00 total = 35,00 Só que na hora da soma fica campo1+campo1 (20,00+20,00) e o certo é campo1+campo2 (20,00+15,00) Estava tentando fazer algo tipo.... function soma2<%=i%>(){ var planetas<%=i%> = new Array() planetas<%=i%>[<%=i%>] = document.getElementById('valortotalitem<%=i%>') document.write(planetas<%=i%>[<%=i%>] + "<br />") }alguém sabe colocar a sintaxe para ver se acumula valores:Início {Encontra a soma dos valores} Variáveis: Inteiro: Valor, Soma; Instruções: Soma <- 0; {Inicializa a variável Soma} Leia (Valor); {Primeira leitura} Repita Soma <- Soma + Valor; {Acumula valor} Leia (Valor); {Leitura dos demais valores} Até Valor = -1; Imprima ('O VALOR TOTAL É:',Soma); {Mostra o resultado} Fim. Editado Novembro 27, 2008 por marvi Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 marvi Postado Novembro 28, 2008 Autor Denunciar Share Postado Novembro 28, 2008 (editado) Pessoal,Te como fazer somar os campos? Tipo:Veja que já faço tudo aí, mas a soma total dos campos com o resultado multiplicado não funciona... tentei algo em javascript mas não sai... tipo um vetor, Array... em ASP tem como fazer isso?Veja que esse formulário funciona: http://www.ideiabiz.com/ok.htmMas a questão é que conseguir fazer isso, o problema é fazer o resultado final, a soma dos campos onde tem o 40,00 na figura não funcionar em um loop de ASP, pois ele acaba auto-somando em vez de somar outros campos...Veja também o meu sistema: http://www.ideiabiz.com/eletrofone/inserirprodutosok.asp libere o POP UP do internet explorar e digite numero 2 quando ele solicitar, verá que irá gerar o Item 1 e o Item 2Nos itens gerados tem o campo unidades, digite uma quantidade la, tipo: 2, abaixo, no final do item, já pode ir para o campo Valor unitário: e coloque um valor, tipo 20,00 e verá que no outro campo abaixo mostra o valor total deste Item, que seria o Item 1. Valor total do item 1 é o campo que mostra o valor total.Esse valor total é a multiplicação do valor digitado (os 20,00) no Valor unitário com o número 2 digitado com o campo unidades, entende? (20,00 X 2 = 40,00)Agora no topo da página tem um campo que somará o campo valor total deste Item de todos os Itens... Chamado: Valor total da nota , mas ele não soma todos os itens, como resolver?Já rodei e nada!Pode ver o HTML! Codigo fonte!Ver se ajuda essa lógica:Eu estava usando isso, mas ele acaba se somando no loop e não somando com outro campo do looploopCampo 1Campo 2nextEle faz campo1 + campo1 e o certo é campo1+campo2veja como eu fizfunction soma1<%=i%>(){ var valortotalitem<%=i%> = document.getElementById('valortotalitem<%=i%>') var campo6 = document.getElementById('campo6'); campo6.value = parseFloat(valortotalitem<%=i%>.value.replace(',','.')) + parseFloat(valortotalitem<%=i%>.value.replace(',','.')) campo6.value = fmtMoney(campo6.value); }Entendeu? esses valortotalitem<%=i%> é o nome e o ID do campo que é multiplicado varias vezes, mas não funciona somando... ele auto-soma Editado Novembro 28, 2008 por marvi Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rafael Spilki Postado Novembro 28, 2008 Denunciar Share Postado Novembro 28, 2008 A questão é... você tem que fazer essa soma do lado cliente... e não do lado do servidor certo?Portanto, pra isso... somente com JS!Cofirma se eu entendi direito... caso afirmativo movo seu tópico pra JS![]'s Rafael Spilki Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 marvi Postado Novembro 28, 2008 Autor Denunciar Share Postado Novembro 28, 2008 certo! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rafael Spilki Postado Novembro 28, 2008 Denunciar Share Postado Novembro 28, 2008 movendo! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 marvi Postado Novembro 28, 2008 Autor Denunciar Share Postado Novembro 28, 2008 RESOLVIDO! VALEU Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Novembro 28, 2008 Denunciar Share Postado Novembro 28, 2008 A mesma dúvida foi resolvida nesse outro tópicoEstou postando somente para que caso alguém precise da solução do problema possa encontrá-la Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 marvi Postado Novembro 28, 2008 Autor Denunciar Share Postado Novembro 28, 2008 (editado) Beleza, foi resolvidoe acho que vai ser muito útil esse sistema... por ser bem personalizado o todo dele! Editado Novembro 28, 2008 por marvi Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
marvi
Pessoal, estou tentando obter um script que multiplique os valores que for digitado em um campo do formulário em R$ (real)
Encontrei esse, mas não faz cálculos em moedas:
Alguém sabe um script que possa fazer multiplicação em moedas? Tipo: 12,80
Obrigado!
Marcelo
Link para o comentário
Compartilhar em outros sites
17 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.