Jump to content
Fórum Script Brasil
  • 0

Formatar Valor R$ (RESOLVIDO)


--_Michel_--
 Share

Question

Bom deixa eu explicar...

O usuário ira lançar um valor de 15.000,00 reias. Bom lógicamente que ele não ira digitar os pontos nem a virgula... Gostaria de saber se tem como fazer o usuário ir digitando o número e os pontos e a vírgula ir se encaixando no valor...

por exemplo:

se ele digitar os dois primeiros digitos iria ficar assim: (15,) depois se ele digitasse mais os três zeros iria ficar assim: 15.000 e ao final digitando mais os dois zeros finais assim: 15.000,00

Seria como autocompletar o número. Pois estou tendo problemas com isso, pois quando o usuário cadastra um valor no banco de dados e depois eu usar a função para formatar o valor para ser exibido da os seguintes erros.

Vamos supor que ele queira cadastrar um produto de quinze mil reais.

se ele digitar assim: 15000 será visualizado assim: 15.000,00

se ele digitar assim: 1500000 será visualizado assim 1.500.000,00

O erro é se ele cadastrar os centavos...

Gostaria de saber se tem como o usuário ir digitando e os pontos e visrgulas se encaixando no valor que ele esta digitando, pois assim não terá erro na hora de inserir um valor...

Edited by --_Michel_--
Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

Amigo, se você quer fazer alguma coisa enquamto o usuario digita, você tem que usar javascript.

É isso que você quer?

Se for eu movo a mensagem pra lá!

Abraços

Link to comment
Share on other sites

  • 0

não brother..

ASP só é executado quando for clicado em algum botao, ou alguma coisa assim.

Só após a pagina ser recarregada.

Assim, enquanto digita, só javascript mesmo.

Vou mover para lá!

Abraços

Link to comment
Share on other sites

  • 0

Valeu Galera... Já achei o código que eu queria....

Vejam

<html>

<head>

<title>Formatação de Valores monetarios</title>

</head>

<body>

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

<input type="text" name="T1" size="20" onKeydown="Formata(this,20,event,2)"></p>

</p>

</body>

</html>

Link to comment
Share on other sites

  • 0
Guest José Pires

Prezado, use esta função. Aqui funciona.

<script LANGUAGE="JavaScript">


///////////////////////////////////////////////
// onKeyPress ="FormataValor(this,11,event);" /
///////////////////////////////////////////////
function FormataValor(campo,tammax,teclapres) {

    var tecla = teclapres.keyCode;
    var vr = campo.value;
    vr = vr.replace( "/", "" );
    vr = vr.replace( "/", "" );
    vr = vr.replace( ",", "" );
    vr = vr.replace( ".", "" );
    vr = vr.replace( ".", "" );
    vr = vr.replace( ".", "" );
    vr = vr.replace( ".", "" );
    tam = vr.length;

    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 <= 2 ){ 
             campo.value = vr; }
         tam = tam - 1;
         if ( (tam > 2) && (tam <= 5) ){
             campo.value = vr.substr( 0, tam - 2 ) + ',' + vr.substr( tam - 2, tam ); }
         if ( (tam >= 6) && (tam <= 8) ){
             campo.value = vr.substr( 0, tam - 5 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, 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 - 2, 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 - 2, 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>

Obs.: para valores 0,01 até 0,99 tem que digitar assim 001 até 099

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.7k
    • Total Posts
      648.5k
×
×
  • Create New...