Ir para conteúdo

POWERED BY:

Arquivado

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

Hambonso

Formatação de 6 casas decimais

Recommended Posts

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, 'muito complicada' ^_^

dá uma olhada nessa usando Expressão Regular. Se você quiser mais digitos, basta completar a ER.

 

http://forum.imasters.com.br/index.php?/topic/392605-mascara-numerica/page__view__findpost__p__1531437

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.