Formatando valores

<< Click to Display Table of Contents >>

Navigation:  Miscelânea >

Formatando valores

Previous pageReturn to chapter overviewNext page

Formatacao.js

 

function Moeda(campo, e) {

  var SeparadorDecimal = ","

  var SeparadorMilesimo = "."

  var sep = 0;

  var key = '';

  var i = j = 0;

  var len = len2 = 0;

  var strCheck = '0123456789';

  var aux = aux2 = '';

  var whichCode = (window.Event) ? e.which : e.keyCode;

 

  if (whichCode == 13) return true;

   key = String.fromCharCode(whichCode); // Valor para o código da Chave  

 

  if (strCheck.indexOf(key) == -1) return false; // Chave inválida  

   len = campo.value.length;

  for (i = 0; i < len; i++)

 

      if ((campo.value.charAt(i) != '0') && (campo.value.charAt(i) != SeparadorDecimal)) break;

   aux = '';

  for (; i < len; i++)

 

      if (strCheck.indexOf(campo.value.charAt(i)) != -1) aux += campo.value.charAt(i);

   aux += key;

   len = aux.length;

 

  if (len == 0) campo.value = '';

  if (len == 1) campo.value = '0' + SeparadorDecimal + '0' + aux;

  if (len == 2) campo.value = '0' + SeparadorDecimal + aux;

  if (len > 2) {

       aux2 = '';

      for (j = 0, i = len - 3; i >= 0; i--) {

          if (j == 3) {

               aux2 += SeparadorMilesimo;

               j = 0;

           }

           aux2 += aux.charAt(i);

           j++;

       }

       campo.value = '';

       len2 = aux2.length;

      for (i = len2 - 1; i >= 0; i--)

           campo.value += aux2.charAt(i);

       campo.value += SeparadorDecimal + aux.substr(len - 2, len);

   }

  return false;

}  

 

 

Default.aspx

 

<head runat="server">

  <script type="text/javascript" src="util/Formatacao.js"></script>

  <title></title>

</head>

<body>

  <form id="form1" runat="server">

  <asp:Label ID="lbl" runat="server">Valor:</asp:Label>

  <br />

  <asp:TextBox ID="txtValor" runat="server" onKeyPress="return Moeda(this,event);"></asp:TextBox>

  <br />

  <br />

  </form>

</body>

</html>

 

Extra - converte texto para decimal

 

string s = txtValor.Text;

decimal d;

 

if (!decimal.TryParse(s, out d))

   d = 0;

 

Response.Write(String.Format("{0:c}", d));