jgd Postado Agosto 20, 2009 Denunciar Share Postado Agosto 20, 2009 Pessoal, Seguinte, uso a função abaixo para formatar campo moeda em reais. A medida que o usuário vai digitando o valor... A virgura e o ponto ( quando há) vai sendo inserida automaticamente. Daí o resultado fica assim: 123,00Agora estou precisando trabalhar com 3 casas decimais. Ou seja : 123,000. Agraço qualuer ajuda. Chamos assim: <input name="nome" value="0,00" onKeyPress="return(formatarMoeda(this,'.',',',event))" onKeyDown="apaga(this, ',' , '.' , event)">function formatarMoeda(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; // Enter key = String.fromCharCode(whichCode); // recebe o valor da chave vinda da chave do código if (strCheck.indexOf(key) == -1) {return false;} len = fld.value.length; if (len == 9) return false; 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 + aux; // if (len == 2) fld.value = '0'+ decSep + aux; if (len > 1) { inteiro = aux.slice(0,aux.length -2 ) parcela = aux.slice(aux.length -2,aux.length ) aux2 = ''; for (j = inteiro.length - 1, i = 0; j >= 0; i++, j--) { if (i % 3 == 0 && i != 0) { aux2 = inteiro.charAt(j) + milSep + aux2; }else {aux2 = inteiro.charAt(j) + aux2;} } fld.value = aux2 + decSep + parcela; } return false; } function apaga(fld, decSep, milSep , event) { var strCheck = '0123456789'; var whichCode = (window.Event) ? event.which : event.keyCode; if(whichCode == 8) { 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 - 1; i++) if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i); len = aux.length; if (len == 0) fld.value = '0'; if (len == 1) fld.value = '0'+ decSep + aux; // if (len == 2) fld.value = '0'+ decSep + aux; if (len > 2) { inteiro = aux.slice(0,aux.length -2 ) parcela = aux.slice(aux.length -2,aux.length ) aux2 = ''; for (j = inteiro.length - 1, i = 0; j >= 0; i++, j--) { if (i % 3 == 0 && i != 0) { aux2 = inteiro.charAt(j) + milSep + aux2; }else {aux2 = inteiro.charAt(j) + aux2;} } fld.value = aux2 + decSep + parcela + '0'; } } } // End --> //--> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 .Andreia. Postado Agosto 21, 2009 Denunciar Share Postado Agosto 21, 2009 veja se este codigo te ajuda: http://scriptbrasil.com.br/forum/index.php...st&p=323596 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
jgd
Pessoal,
Seguinte, uso a função abaixo para formatar campo moeda em reais.
A medida que o usuário vai digitando o valor... A virgura e o ponto ( quando há) vai sendo inserida
automaticamente.
Daí o resultado fica assim: 123,00
Agora estou precisando trabalhar com 3 casas decimais. Ou seja : 123,000.
Agraço qualuer ajuda.
Chamos assim:
<input name="nome" value="0,00" onKeyPress="return(formatarMoeda(this,'.',',',event))" onKeyDown="apaga(this, ',' , '.' , event)">
Link para o comentário
Compartilhar em outros sites
1 resposta 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.