Ir para conteúdo

Arquivado

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

jrjoliv2003

Formatar valor monetário com 2 casas decimais

Recommended Posts

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

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.