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

Formatação de 6 casas decimais


Hambonso

Pergunta

Eu estou readaptando uma função que formata valores em moeda, para que possa ser inserido no banco, valores com 6 casas decimais. Mas estou tendo problemas, quando o valor digitado for maior que 999,999999. A função funciona perfeitamente quando são digitados valores menores que 1.000, mas igual ou maior que esse valor, a função deixa de formata com 6 casas decimais e passa a formatar com 5 casas decimais. Segue o código a baixo:

A FUNÇÂO:

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 <= 9) ){
campo.value = vr.substr( 0, tam - 6 ) + "," + vr.substr( tam - 6, tam ); }
if ( (tam >= 10) && (tam <= 12) ){
campo.value = vr.substr( 0, tam - 9 ) + "." + vr.substr( tam - 9, 3 ) + "," + vr.substr( tam - 6, tam );}
if ( (tam >= 13) && (tam <= 15) ){
campo.value = vr.substr( 0, tam - 12 ) + "." + vr.substr( tam - 12, 3 ) + "." + vr.substr( tam - 9, 3 ) + "," + vr.substr( tam - 6, tam ); }
if ( (tam >= 16) && (tam <= 18) ){
campo.value = vr.substr( 0, tam - 15 ) + "." + vr.substr( tam - 15, 3 ) + "." + vr.substr( tam - 12, 3 ) + "." + vr.substr( tam - 9, 3 ) + "," + vr.substr( tam - 6, tam ); }
if ( (tam >= 19) && (tam <= 21) ){
campo.value = vr.substr( 0, tam - 18 ) + "." + vr.substr( tam - 18, 3 ) + "." + vr.substr( tam - 15, 3 ) + "." + vr.substr( tam - 12, 3 ) + "." + vr.substr( tam - 9, 3 ) + "," + vr.substr( tam - 6, tam );}
}

}
No FORM
<td> <input type="text" name="vlcota" maxlength="20" onkeydown="Formata(this,20,event,6)" style='text-align:right; border:1px solid black; font-size:9pt; font-weight:bold; color: #000088; width:120px; height:20px;'> <font face="Arial" size="-6" color="#000009"><b>Valor máximo: 9.999.999,999999</b></font></td>

O que está errado no código da função que está causando esse erro na formatação durante a digitação ?

Desde já agradeço pela atenção.

Link para o comentário
Compartilhar em outros sites

2 respostass 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.

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...