ODRACIR Postado Novembro 6, 2007 Denunciar Share Postado Novembro 6, 2007 Estou iniciando em javascript e peguei um código pronto de uma Loja Virtual (lojavirtual-js) e gostaria de obter ajuda para que a função abaixo seja transformada para a moeda brasileira. No mesmo código já estabelece uma variável MonetarySymbol = '$'; que eu mudei para R$, mais sóo símboleo funciona o resto não, alguém pode me ajudar?//---------------------------------------------------------------------|| // FUNCTION: MoneyFormat || // PARAMETERS: Number to be formatted || // RETURNS: Formatted Number || // PURPOSE: Reformats Dollar Amount to #.## format || //---------------------------------------------------------------------|| function moneyFormat(input) { var dollars = Math.floor(input); var tmp = new String(input); for ( var decimalAt = 0; decimalAt < tmp.length; decimalAt++ ) { if ( tmp.charAt(decimalAt)=="," ) break; } var cents = "" + Math.round(input * 100); cents = cents.substring(cents.length-2, cents.length) dollars += ((tmp.charAt(decimalAt+2)=="9")&&(cents=="00"))? 1 : 0; if ( cents == "0" ) cents = "00"; return(dollars + "," + cents); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ODRACIR Postado Novembro 9, 2007 Autor Denunciar Share Postado Novembro 9, 2007 Aos 55 anos e sonhando ter um Portal na Internet é meio brabo. Não sei como funciona um forum, é a primeira vez que me cadastrei e postei uma dúvida.Acho até que esta dúvida deve ser fácil de resolver, haja vista, o excelente nível de domínio do JavaScript pelos participantes.Entretanto, até o momento não tive o socorro esperado e necessito resolver este pequeno problema para colocar meu portal no ar.Se não for pedir muito gostaria que alguém da alta c*pula do Fórum intercedesse a meu favor e me desse essa ajudinha.Desde já a casa agradece penhorosamente. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fercosmig Postado Novembro 9, 2007 Denunciar Share Postado Novembro 9, 2007 como retorna o valor?aparentemente está retornando neste formato -> #,## correto? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Novembro 9, 2007 Denunciar Share Postado Novembro 9, 2007 essa funcao transforma um valor 9999.99 no formato 9999,99, o q você queria q acontecesse q não acontece??se você queria tipo assim: 9.999.99 com ponto, então troque a linha:return(dollars + "," + cents); por: var formato = "";var valor = String(dollars);for (var num = valor.length - 3; num >= 0; num = num - 3){ formato = valor.substring(num, num + 3) + (formato != "" ? "." : "") + formato;}formato = (valor.substring(num + 3, 0) != "" ? valor.substring(num + 3, 0) + (formato != "" ? "." : "") : "") + formato;return(formato + "," + cents);[/code] Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Novembro 9, 2007 Denunciar Share Postado Novembro 9, 2007 mano q é q ce ta falando?? pelo q eu entendi é sobre esse tópico certo: http://scriptbrasil.com.br/forum/index.php?showtopic=110188 ??se for esse o caso, então tenta sempre explicar melhor qual é a sua duvida, beleza?? quando você disse "mais só o símboleo funciona o resto não", provavelmente ninguém entendeu do q se tratava, já q a gente não sabe o q é "o resto" e COMO deveria funcionar. você q quer usar a funcao e a gente não tem como saber o q você quer dela.provavelmente por isso ninguém te deu resposta.postei uma resposta la mas não sei se é isso q você quer. como você não explicou direito, eu posso ter postado uma solucao q não vai ajudar, ou seja, posso ter perdido meu tempo postando. ou seja, se você explicar melhor, facilita pra nós e pra você, beleza??na hora de postar tenta se imaginar lendo o tópico pra ver se você entenderia o q esta escrito. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 .Andreia. Postado Novembro 12, 2007 Denunciar Share Postado Novembro 12, 2007 bom, o pior de tudo é que dois usuarios se dispuseram a tentar te ajudar e voce nem retorno deu...Além daquela velha historia que estamos aqui apenas como "voluntarios", apenas com o prazer de ajudar. Se voce não obteve a resposta do problema é porque você não explicou suficientemente bem ou porque todos que leram seu tópico não souberam ajudar.então, primeiramente, va ao seu post e resposta aos usuarios que responderam seu tópico.Ps.: não entendi o titulo do tópico...Att.SAC SB Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Noriva (deslogado de novo!) Postado Novembro 13, 2007 Denunciar Share Postado Novembro 13, 2007 Prezado senhor acho que o recomendável para seu caso é procurar um profissional da área que lhe disponibilize este serviço, aqui vão algumas indicações:http://www.nrv.brservidor.com/servicos_res...ar=loja+virtualhttp://www.genilho.comhttp://www.edgarserra.com/blogExplicação:O projeto cujo o senhor quer desenvolver é muito complexo para se aprender da noite para o dia, se trata de uma loja virtual com muitas complicações inclusive em termos burocráticos que somente uma pessoa com experiênciaa já nisso poderia lhe ajudar Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Odracir Postado Novembro 13, 2007 Denunciar Share Postado Novembro 13, 2007 Obrigado pelas dicas.Obrigado pelo puxão de orelha. Na verdade ando muito ocupado. Agradeço muito sua atenção. Admito não ter explicado muito bem a minha dúvida.Caso tenha interesse em continuar me ajudando, visite www.comocomprarbem.com.br e selecione ver detalhes e inclua na lista. O resultado parececorreto mais não é. Se adicionar mais de um produto verá que os centavos não estão sendo somados. Acontece que essa rotina eu peguei de uma lojavirtual que baixei aí no scriptbrasil, o nome dela é lojavistual-js. Nela existem 3 arquivos que reporduzem o resultado da lista de compras, são eles: - managecart.html; - language-br.js; - media.js; - nopcart.js.No arquivo nopcart.js tem a função abaixo que formata a moeda para dolar e eu gostaria que alguém me ajudasse em fazer com que a referida funçao formatasse a moeda para real, por que no banco de dados de preços dos anúncios está em real.//---------------------------------------------------------------------|| // FUNCTION: MoneyFormat || // PARAMETERS: Number to be formatted || // RETURNS: Formatted Number || // PURPOSE: Reformats Dollar Amount to #.## format || //---------------------------------------------------------------------|| function moneyFormat(input) { var dollars = Math.floor(input); var tmp = new String(input); for ( var decimalAt = 0; decimalAt < tmp.length; decimalAt++ ) { if ( tmp.charAt(decimalAt)=="." ) break; } var cents = "" + Math.round(input * 100); cents = cents.substring(cents.length-2, cents.length) dollars += ((tmp.charAt(decimalAt+2)=="9")&&(cents=="00"))? 1 : 0; if ( cents == "0" ) cents = "00"; return(dollars + "." + cents); } Desde já me desculpe pela indelicadeza de não responder a todos (é que estou procurando em vários foruns e não tive sucesso) Obrigado Ricardo. Obrigado pela sua atenção. O que na realidade preciso é que a função abaixo faça a formatação para a moeda real e não para dolar. //---------------------------------------------------------------------|| // FUNCTION: MoneyFormat || // PARAMETERS: Number to be formatted || // RETURNS: Formatted Number || // PURPOSE: Reformats Dollar Amount to #.## format || //---------------------------------------------------------------------|| function moneyFormat(input) { var dollars = Math.floor(input); var tmp = new String(input); for ( var decimalAt = 0; decimalAt < tmp.length; decimalAt++ ) { if ( tmp.charAt(decimalAt)=="." ) break; } var cents = "" + Math.round(input * 100); cents = cents.substring(cents.length-2, cents.length) dollars += ((tmp.charAt(decimalAt+2)=="9")&&(cents=="00"))? 1 : 0; if ( cents == "0" ) cents = "00"; return(dollars + "." + cents); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Novembro 13, 2007 Denunciar Share Postado Novembro 13, 2007 aiaiai ai q ta o problema. primeira coisa, aqui não é lugar pra pedir ajuda de javascript, você devia ter postado na sala de javascript e de preferencia naquele tópico q você já crioumas esse é o problema: o q você quer dizer com a moeda ser formatada em real?? qual o formato do real??isso é uma coisa completamente relativa, qualquer um poe o formato q quiser, e não importa o valor ou formato q teja, é você (quem faz o site) quem diz se é dolar ou real ou euro ou o q for.o q você tem q nos dizer é, se você quer o formato assim 9.999,99 ou assim 9,999.99 ou assim R$ 9.999,99 e etc.ou por um acaso você tem o VALOR em dolar e quer converter o VALOR pra real baseado na cotacao??ate agora não da pra ter ideia do q você realmente quer. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Odracir Postado Novembro 13, 2007 Denunciar Share Postado Novembro 13, 2007 Desde o início eu postei minha dúvida na seção Javascript e não sei o porque que você e outra pessoa chegaram até minha dúvida, não foi minha culpa, e como disse se estou fazendo algo de errado é por pura ignorância (falta de conhecimento).O que quero é que a função gere R$99.999,00 o que não está acontecendo.Se você puder encaminhar para alguém que possa ajudar eu agradeço penhorosamente. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MLeandroJr! Postado Novembro 13, 2007 Denunciar Share Postado Novembro 13, 2007 Se eu entendí bem, você quer inserir os valores no script dessa forma: 352,20E quer que a saída dele fique dessa forma: R$ 352,20Correto?A função para isso ficará assim://---------------------------------------------------------------------|| // FUNCTION: MoneyFormat || // PARAMETERS: Number to be formatted || // RETURNS: Formatted Number || // PURPOSE: Reformats Dollar Amount to #.## format || //---------------------------------------------------------------------|| function moneyFormat(input) { var dollars = Math.floor(input); var tmp = new String(input); for ( var decimalAt = 0; decimalAt < tmp.length; decimalAt++ ) { if ( tmp.charAt(decimalAt)=="," ) break; } var cents = "" + Math.round(input * 100); cents = cents.substring(cents.length-2, cents.length) dollars += ((tmp.charAt(decimalAt+2)=="9")&&(cents=="00"))? 1 : 0; if ( cents == "0" ) cents = "00"; return("R$" + dollars + "," + cents); }Estou movendo este tópico para a área de JavaScript, e peço para que, por favor, os moderadores dessa área mesclem seus tópicos para que seja mais fácil responder às suas dúvidas.Obrigado! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fercosmig Postado Novembro 13, 2007 Denunciar Share Postado Novembro 13, 2007 tópicos mesclados! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Novembro 13, 2007 Denunciar Share Postado Novembro 13, 2007 Desde o início eu postei minha dúvida na seção Javascript e não sei o porque que você e outra pessoa chegaram até minha dúvida, não foi minha culpa,no outro tópico a gente tava discutindo se tavamos ajudando ou não. o tópico na secao de javascript era o tópico em q a gente tava discutindo a funcao, e era nele q você deveria continuar postando sobre a funcao, e não no tópico na sala principal.mas agora os topicos tão mesclados então ta tudo certo.O que quero é que a função gere R$99.999,00 o que não está acontecendo.a resposta pra isso eu já passei nesse post aqui: http://scriptbrasil.com.br/forum/index.php...st&p=457122e ai era so você adicionar na frente o R$ (o q você disse já tinha consguido fazer) assim como no exemplo do lucifer. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --Odracir1952 -- Postado Novembro 13, 2007 Denunciar Share Postado Novembro 13, 2007 Obrigado, resolveu em parte, entretanto, quando há uma soma os centavos são desconsiderados.Quando busca a informação no banco de dados é assimformatnumber(rs(preço_normal),2) ou seja, no bd esta registrado 12,90 aí na tela aparece R$12,90,quando pego essa mesma variável e somo vários valores os centavos não são considerados por que a maneira de mostrar é essa://---------------------------------------------------------------------|| // FUNCTION: ManageCart || // PARAMETERS: Null || // RETURNS: Product Table Written to Document || // PURPOSE: Draws current cart product table on HTML page || //---------------------------------------------------------------------|| function ManageCart( ) { var iNumberOrdered = 0; //Number of products ordered var fTotal = 0; //Total cost of order var fTax = 0; //Tax amount var fShipping = 0; //Shipping amount var strTotal = ""; //Total cost formatted as money var strTax = ""; //Total tax formatted as money var strShipping = ""; //Total shipping formatted as money var strOutput = ""; //String to be written to page var bDisplay = true; //Whether to write string to the page (here for programmers) iNumberOrdered = GetCookie("NumberOrdered"); if ( iNumberOrdered == null ) iNumberOrdered = 0; if ( bDisplay ) strOutput = "<TABLE CLASS=\"nopcart\"><TR>" + "<TD CLASS=\"nopheader\"><B>"+strILabel+"</B></TD>" + "<TD CLASS=\"nopheader\"><B>"+strDLabel+"</B></TD>" + "<TD CLASS=\"nopheader\"><B>"+strQLabel+"</B></TD>" + "<TD CLASS=\"nopheader\"><B>"+strPLabel+"</B></TD>" + (DisplayShippingColumn?"<TD CLASS=\"nopheader\"><B>"+strSLabel+"</B></TD>":"") + "<TD CLASS=\"nopheader\"><B>"+strRLabel+"</B></TD></TR>"; if ( iNumberOrdered == 0 ) { strOutput += "<TR><TD COLSPAN=6 CLASS=\"nopentry\"><CENTER><BR><B>SUA LISTA DE COMPRAS ESTÁ VAZIA!!!</B><BR><BR></CENTER></TD></TR>"; } for ( i = 1; i <= iNumberOrdered; i++ ) { NewOrder = "Order." + i; database = ""; database = GetCookie(NewOrder); Token0 = database.indexOf("|", 0); Token1 = database.indexOf("|", Token0+1); Token2 = database.indexOf("|", Token1+1); Token3 = database.indexOf("|", Token2+1); Token4 = database.indexOf("|", Token3+1); fields = new Array; fields[0] = database.substring( 0, Token0 ); // Product ID fields[1] = database.substring( Token0+1, Token1 ); // Quantity fields[2] = database.substring( Token1+1, Token2 ); // Price fields[3] = database.substring( Token2+1, Token3 ); // Product Name/Description fields[4] = database.substring( Token3+1, Token4 ); // Shipping Cost fields[5] = database.substring( Token4+1, database.length ); //Additional Information fTotal += (parseInt(fields[1]) * parseFloat(fields[2]) ); // fShipping += (parseInt(fields[1]) * parseFloat(fields[4]) ); // fTax = (fTotal * TaxRate); strTotal = fTotal; // strTax = fTax; // strShipping = fShipping; if ( bDisplay ) { strOutput += "<TR><TD CLASS=\"nopentry\">" + fields[0] + "</TD>"; if ( fields[5] == "" ) strOutput += "<TD CLASS=\"nopentry\">" + fields[3] + "</TD>"; else strOutput += "<TD CLASS=\"nopentry\">" + fields[3] + " - <I>"+ fields[5] + "</I></TD>"; strOutput += "<TD CLASS=\"nopentry\"><INPUT TYPE=TEXT NAME=Q SIZE=2 VALUE=\"" + fields[1] + "\" onChange=\"ChangeQuantity("+i+", this.value);\"></TD>"; strOutput += "<TD CLASS=\"nopentry\">"+ MonetarySymbol + fields[2] + "</TD>"; if ( DisplayShippingColumn ) { if ( parseFloat(fields[4]) > 0 ) strOutput += "<TD CLASS=\"nopentry\">"+ MonetarySymbol + fields[4] + "</TD>"; else strOutput += "<TD CLASS=\"nopentry\">N/A</TD>"; } strOutput += "<TD CLASS=\"nopentry\" ALIGN=CENTER><input type=button value=\" "+strRButton+" \" onClick=\"RemoveFromCart("+i+")\" class=\"nopbutton\"></TD><P><P></TR>"; } if ( AppendItemNumToOutput ) { strFooter = i; } else { strFooter = ""; } if ( HiddenFieldsToCheckout ) { strOutput += "<input type=hidden name=\"" + OutputItemId + strFooter + "\" value=\"" + fields[0] + "\">"; strOutput += "<input type=hidden name=\"" + OutputItemQuantity + strFooter + "\" value=\"" + fields[1] + "\">"; strOutput += "<input type=hidden name=\"" + OutputItemPrice + strFooter + "\" value=\"" + fields[2] + "\">"; strOutput += "<input type=hidden name=\"" + OutputItemName + strFooter + "\" value=\"" + fields[3] + "\">"; strOutput += "<input type=hidden name=\"" + OutputItemShipping + strFooter + "\" value=\"" + fields[4] + "\">"; strOutput += "<input type=hidden name=\"" + OutputItemAddtlInfo + strFooter + "\" value=\"" + fields[5] + "\">"; } } if ( bDisplay ) { strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=3><B>"+ strSUB +"</B></TD>"; strOutput += "<TD CLASS=\"noptotal\" COLSPAN=2><B>" + moneyFormat(strTotal) + "</B></TD>"; strOutput += "</TR>"; if ( HiddenFieldsToCheckout ) { strOutput += "<input type=hidden name=\""+OutputOrderSubtotal+"\" value=\""+ moneyFormat(strTotal) + "\">"; } } g_TotalCost = fTotal; document.write(strOutput); document.close(); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
ODRACIR
Estou iniciando em javascript e peguei um código pronto de uma Loja Virtual (lojavirtual-js) e gostaria de obter ajuda para que a função abaixo
seja transformada para a moeda brasileira. No mesmo código já estabelece uma variável MonetarySymbol = '$'; que eu mudei para R$, mais só
o símboleo funciona o resto não, alguém pode me ajudar?
Link para o comentário
Compartilhar em outros sites
13 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.