none
Formatar Campo, Monetário RRS feed

  • Pergunta

  • Estou querendo formatar um campo em que será colocado um preço de produto. Queria que quando a pessoa começasse a digitar o valor fosse colocando a vírgula e também o ponto.
    Um exemplo: Site dos Correios

    Será que alguém pode me ajudar?
     
    Obs: já usei dois scripts diferentes pra isso, um deles apresenta o mesmo problema que o site dos correios ali citado (sair do campo com shift+tab, e voltar com tab! quando digitar qualquer numero, o primeiro digito vai pra frente os outros pra tras do campo! ele se perde), e no outro script, o comando window.event.returnValue = false que é necessario, cancela o uso de outras funções no mesmo campo!
     
    Alguem pode me ajudar?
    quinta-feira, 22 de junho de 2006 10:52

Todas as Respostas

  • Leandro,

    Eu uso a solução do Banco do Brasil que se não me engano a dos Correios é similar.

    Já usou o bb.com.br?

    Eu trabalho com aquela solução, que inclusive peguei do próprio site e adaptei.

    Veja abaixo o js:

    ---------------------------------------------------------------------------------------------------------------------------------------------

    // Mostra ajuda
    //ex.: onFocus=SetHelp('Informe o valor com os centavos.') // coloque isso no campo que quer que dispare o help
    function SetHelp(txt) {
     document.getElementById('lblStatus1').innerHTML = txt;
    }


    //Formata valor
    //ex.: onKeyDown='FormataValor("valor", 13, event)
    //Obs.: "valor" é o nome do campo, 13 o tamanho máximo permitido de carac. do campo e event é a tecla pressionada'
    function FormataValor(obj,tammax,teclapres) {
     var tecla = teclapres.keyCode;
     vr = obj.value;
     vr = vr.replace( "/", "" );
     vr = vr.replace( "/", "" );
     vr = vr.replace( ",", "" );
     vr = vr.replace( ",", "" );
     vr = vr.replace( ".", "" );
     vr = vr.replace( ".", "" );
     vr = vr.replace( ".", "" );
     vr = vr.replace( ".", "" );
     //Replaces adicionais
     //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 ){
       obj.value = vr ; }
      if ( (tam > 2) && (tam <= 5) ){
       obj.value = vr.substr( 0, tam - 2 ) + ',' + vr.substr( tam - 2, tam ) ; }
      if ( (tam >= 6) && (tam <= 8) ){
       obj.value = vr.substr( 0, tam - 5 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ; }
      if ( (tam >= 9) && (tam <= 11) ){
       obj.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) ){
       obj.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) ){
       obj.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 ) ;}
     }
    }

    ---------------------------------------------------------------------------------------------------------------------------------------------

    Tá ai.

    A formataValor formata o campo exatamente do jeito que está querendo.
    A SetHelp é uma função de brinde que estou passando, que também é usado pelo bb para instruir o usuário ao preenchimento correto dos campos.

     

     

    Espero ter ajudado!

    • Sugerido como Resposta Daniel.X domingo, 19 de setembro de 2010 21:24
    sábado, 24 de junho de 2006 02:49
  • Leandro use o MaskTextBox, e defina a mascara...

    Abraço!

    terça-feira, 27 de junho de 2006 14:03
  • Ola fabiano

     

    O meu problema é o mesmo mas estou usando um dataGrid

    O procedimento é o mesmo e onde devo colocar o codigo

    sexta-feira, 7 de julho de 2006 12:38
  • Thyagocf,

    Você deve criar um arquivo .js e depois importar pra seu documento aspx (HTML) da seguinte forma:

    <script language="javascript" src="js/maskValor.js" type="text/javascript"></script>

    Coloca isso no <Head>..... do seu documento aspx(html) para fazer referência à função usada pra mascarar.

     

    No DataGrid, Use o TemplateColumn e coloque TextBox e dentro do TextBox coloque:

    onKeyDown='FormataValor("valor", 13, event)

    No Exemplo de código que postei acima, tem os exemplo de como usar. Nos comentários.

     


       

    sexta-feira, 7 de julho de 2006 15:49
  • Se estiver usando vb.net vc pode usar a função FormatNumber(valor,casas decimais)

    espero ter ajudado

    ....
    quinta-feira, 17 de julho de 2008 17:34