Ir para conteúdo

Publicidade

 Estatísticas do Fórum

  • 0 Usuários ativos

    0 membros, 0 visitantes, 0 membros anônimos

Foto
- - - - -

Formatar valor monetário com 2 casas decimais

  • Por favor, faça o login para responder
7 respostas neste tópico

#1 jrjoliv2003

jrjoliv2003
  • Members
  • 286 posts

Postado 09 abril 2007 - 17:15

Galera encontrei esse código que formata o valor digitado pelo usuário. Só que está com três casas decimais. Não encontrei no código a opção para mudar para 2 casas decimais.Quem puder ajudar:<script language="JavaScript">function currencyFormat(fld, milSep, decSep, e) { var sep = 0; var key = ''; var i = j = 0; var len = len2 = 0; var strCheck = '0123456789'; var aux = aux2 = ''; var whichCode = (window.Event) ? e.which : e.keyCode; if (whichCode == 13) return true; key = String.fromCharCode(whichCode); if (strCheck.indexOf(key) == -1) return false; len = fld.value.length; for(i = 0; i < len; i++) if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break; aux = ''; for(; i < len; i++) if (strCheck.indexOf(fld.value.charAt(i))!= -1) aux += fld.value.charAt(i); aux += key; len = aux.length; if (len == 0) fld.value = ''; if (len == 1) fld.value = '0' + decSep + '0' + '0' + aux; if (len == 2) fld.value = '0' + decSep + '0' + aux; if (len == 3) fld.value = '0' + decSep + aux + aux2; if (len > 3) { aux2 = ''; for (j = 3, i = len - 4; i >= 0; i--) { if (j == 3) { aux2 += milSep; j = 0; } aux2 += aux.charAt(i); j++; } fld.value = ''; len2 = aux2.length; for (i = len2 -1; i > 0; i--) // Alterei de i >= 0 para i > 0 fld.value += aux2.charAt(i); fld.value += decSep + aux.substr(len - 3, len); // Número de casas após a vírgula } return false;}</script>Valeu a força!!!JR.
  • 0

Publicidade

#2 Fabyo

Fabyo

    PHP

  • Masters
  • 5.911 posts

Postado 10 abril 2007 - 07:40

http://forum.imaster...howtopic=144107
  • 0

#3 jrjoliv2003

jrjoliv2003
  • Members
  • 286 posts

Postado 10 abril 2007 - 10:05

Fabyo, obrigado por ter respondido mas não entendi muito bem o código que você me indicou. O código que eu postei vai encaixando os números em uma máscara que contém milhar(.) e casas decimais (,). Só que podemos preencher com até 3 casas decimais. Gostaria que limitasse com 2. u não encontrei a opção que reduz isso.Valeu a força!!!JR.
  • 0

#4 Fabyo

Fabyo

    PHP

  • Masters
  • 5.911 posts

Postado 10 abril 2007 - 10:27

entao o exemplo que eu mostrei do Illidan tem 2 funções la a 2º é sobre formatar numeros só ver o exemplo que ele mostrou que você ve como deixar 2 casas decimais
  • 0

#5 jrjoliv2003

jrjoliv2003
  • Members
  • 286 posts

Postado 10 abril 2007 - 10:56

Achei no código que você me indicou numero.format(2, ",", ".") mas não funcionou.No código que postei encontrei uma das últimas linhas fld.value += decSep + aux.substr(len - 3, len); ela altera o valor das casas decimais. Se de 3 mudo para 4, beleza, as casas decimais alteram para 4. Mas se mudo para 2 não funciona.Valeu a força!!JR.
  • 0

#6 jrjoliv2003

jrjoliv2003
  • Members
  • 286 posts

Postado 11 abril 2007 - 10:05

Este código aumaticamente vai preenchendo os espaços com os números digitados pelo usuário para um valor em R$. Só que está com três casas decimais. Analisando o código só encontrei esta linha que altera em alguma coisa.fld.value += decSep + aux.substr(len - 3, len); // Número de casas após a vírgulaSe mudo o numero 3 para 4, o número de casas decimais tb altera. Mas se mudo para 2 fica errado. Preciso que fique com 2 casas decimais.Quem puder ajudar:<script language="JavaScript">function currencyFormat(fld, milSep, decSep, e) {var sep = 0;var key = '';var i = j = 0;var len = len2 = 0;var strCheck = '0123456789';var aux = aux2 = '';var whichCode = (window.Event) ? e.which : e.keyCode;if (whichCode == 13)return true;key = String.fromCharCode(whichCode);if (strCheck.indexOf(key) == -1) return false;len = fld.value.length;for(i = 0; i < len; i++)if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break;aux = '';for(; i < len; i++)if (strCheck.indexOf(fld.value.charAt(i))!= -1) aux += fld.value.charAt(i);aux += key;len = aux.length;if (len == 0) fld.value = '';if (len == 1) fld.value = '0' + decSep + '0' + '0' + aux;if (len == 2) fld.value = '0' + decSep + '0' + aux;if (len == 3) fld.value = '0' + decSep + aux + aux2;if (len > 3) {aux2 = '';for (j = 3, i = len - 4; i >= 0; i--) {if (j == 3) {aux2 += milSep;j = 0;}aux2 += aux.charAt(i);j++;}fld.value = '';len2 = aux2.length;for (i = len2 -1; i > 0; i--) // Alterei de i >= 0 para i > 0fld.value += aux2.charAt(i);fld.value += decSep + aux.substr(len - 3, len); // Número de casas após a vírgula}return false;}</script>Valeu a força!!!JR.
  • 0

#7 hunternh

hunternh

    Wagner B. Soares

  • Members
  • 407 posts

Postado 11 abril 2007 - 11:05

De uma olhada nesse exemplo: http://hunternh.110m...cara_moeda.html
  • 0

#8 jrjoliv2003

jrjoliv2003
  • Members
  • 286 posts

Postado 11 abril 2007 - 16:45

hunternh , show de bola!!!Hoje vou adaptar esse código a minha necessidade pois tenho que entregar rápido a tela. Mas pode ter certeza que vou estuda-lo.Valeu a força!!!JR.
  • 0




Publicidade

/ins>