Ir para conteúdo
Fórum Script Brasil
  • 0

Formatacao de valores Monetarios


nosliwde

Pergunta

Oi pessoal.

A Funcao abaixo formata um valor monetario da seguinte forma:

Se entro com o valor 10000 ela formata 10000,00.

Gostaria que ficasse formatadao assim: 10.000,00 ou se o valor entrado fosse 1000000 (Um Milhao), que ficasse assim 1.000.000,00.

Eis a funcao:

// CAMPO DO TIPO 0,00
function FormataValor(campo, tammax, teclapres)
{
    tecla = teclapres.keyCode
    if (tecla==9)
        return
    vr = campo.value    
    vr = vr.replace( ",", "" )
    vr = vr.replace( ".", "" )
    vr = vr.replace( ".", "" )
    vr = vr.replace( "/", "" )
    tam = vr.length
    if ((tam>2)&&(vr.substring(0,1)==0))
    {
        campo.value = vr.substring(1,tam)
        vr = campo.value
        tam = vr.length
    }
    if (tam > tammax)
        return
    if (tecla == 8)
        tam=tam-2 
    if (tam<2)
        campo.value = "0," + vr
    else
        campo.value = vr.substring(0,tam-1) + "," + vr.substring(tam-1, vr.length)
}

O que tenho que mudar pra que ocorra o resultado que espero, como citado nas primeiras linhas?

Aguardo sua ajuda.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Aí fera, dei uma olhada na net e achei isso:

<script>
function Limpar(valor, validos) {
// retira caracteres invalidos da string
var result = "";
var aux;
for (var i=0; i < valor.length; i++) {
aux = validos.indexOf(valor.substring(i, i+1));
if (aux>=0) {
result += aux;
}
}
return result;
}

//Formata número tipo moeda usando o evento onKeyDown

function Formata(campo,tammax,teclapres,decimal) {
var tecla = teclapres.keyCode;
vr = Limpar(campo.value,"0123456789");
tam = vr.length;
dec=decimal

if (tam < tammax && tecla != 8){ tam = vr.length + 1; }

if (tecla == 8 )
{ tam = tam - 1; }

if ( tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105 )
{

if ( tam <= dec )
{ campo.value = vr; }

if ( (tam > dec) && (tam <= 5) ){
campo.value = vr.substr( 0, tam - 2 ) + "," + vr.substr( tam - dec, tam ); }
if ( (tam >= 6) && (tam <= 8) ){
campo.value = vr.substr( 0, tam - 5 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - dec, tam ); 
}
if ( (tam >= 9) && (tam <= 11) ){
campo.value = vr.substr( 0, tam - 8 ) + "." + vr.substr( tam - 8, 3 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - dec, tam ); }
if ( (tam >= 12) && (tam <= 14) ){
campo.value = vr.substr( 0, tam - 11 ) + "." + vr.substr( tam - 11, 3 ) + "." + vr.substr( tam - 8, 3 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - dec, tam ); }
if ( (tam >= 15) && (tam <= 17) ){
campo.value = vr.substr( 0, tam - 14 ) + "." + vr.substr( tam - 14, 3 ) + "." + vr.substr( tam - 11, 3 ) + "." + vr.substr( tam - 8, 3 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - 2, tam );}
} 

}
</script>
E essa aí é o code da INPUT:
<input type="text" name="texto" size="20" onKeydown="Formata(this,20,event,2)">

É lgl porque ele reseta o field quando você n digita números :D

Créditos: psychocandy do guiadohardware.net

Té +!

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...