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.
Formatar valor monetário com 2 casas decimais
Criado por jrjoliv2003, 09/04
7 respostas neste tópico
#1
Postado 09 abril 2007 - 17:15
#3
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.
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.
#4
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
#5
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.
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.
#6
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írgula
Se 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 > 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.
fld.value += decSep + aux.substr(len - 3, len); // Número de casas após a vírgula
Se 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 > 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.
#8
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.
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.
1 usuário(s) está(ão) lendo este tópico
1 membro(s), 0 visitante(s) e 0 membros anônimo(s)
Últimas Notícias no Portal iMasters
Para IBM, 1,5 bilhão de pessoas usa redes sociais regularmente
Relatório da empresa prevê que, nos próximos dois anos, aproximadamente 70% das organizações irão aumentar os investimentos em tecnologias móveis.
Ver mais notícias-
Twitter
Siga o perfil do iMasters -
Linkedin
Cadastre-se no grupo iMasters -
gitHub
Códigos iMasters DEV -
RSS
Assine os feeds




