Fórum Máscara numérica #7136

25/06/2009

0

Preciso colocar uma máscara numérica em um TextBox em C# ASPX.
Tentei utilizar o MaskedEditExtender do AJAX Control Toolkit com a máscara 9,999.99
O problema é que para um número fixo serve, mas o usuário poderá digitar um número 123.123.123.131,12 e deste modo a máscara não serve, e se limitar o valor máximo a máscara exibe um monte de separadores
Tem como fazer algo?
Valter Ferreira

Valter Ferreira

Responder

Posts

27/06/2009

Luiz Maia

Ola Valter,   Faça o seguinte:   Acrescente uma Mascara Javascript para isto: Segue o Codigo de exemplo:   public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { TextBox1.Attributes["onKeyPress"] = "javascript:return MascaraMoeda(this, '.', ',', event);"; } }   E no modo HTML: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script language="javascript" type="text/javascript"> //----------------------------------------------------- //Funcao: MascaraMoeda //Sinopse: Mascara de preenchimento de moeda //Parametro: // objTextBox : Objeto (TextBox) // SeparadorMilesimo : Caracter separador de mil‚simos // SeparadorDecimal : Caracter separador de decimais // e : Evento //Retorno: Booleano //----------------------------------------------------- function MascaraMoeda(objTextBox, SeparadorMilesimo, SeparadorDecimal, e) { 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 = objTextBox.value.length; for (i = 0; i < len; i++) if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal)) break; aux = ''; for (; i < len; i++) if (strCheck.indexOf(objTextBox.value.charAt(i)) != -1) aux += objTextBox.value.charAt(i); aux += key; len = aux.length; if (len == 0) objTextBox.value = ''; if (len == 1) objTextBox.value = '0' + SeparadorDecimal + '0' + aux; if (len == 2) objTextBox.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++; } objTextBox.value = ''; len2 = aux2.length; for (i = len2 - 1; i >= 0; i--) objTextBox.value += aux2.charAt(i); objTextBox.value += SeparadorDecimal + aux.substr(len - 2, len); } return false; } </script> </head> <body> <form id="form1" runat="server"> <div> <asp:TextBox ID="TextBox1" style="text-align:right" runat="server" Width="200px"></asp:TextBox> </div> </form> </body> </html> Espero ter ajudado. Abraços Att Luiz Maia
Responder

Gostei + 0

29/06/2009

Devmedia

Valter,
a resposta do consultor foi suficiente? Podemos encerrar o chamado?
Responder

Gostei + 0

01/07/2009

Devmedia

Valter,
por falta de retorno estamos encerrando o chamado. Caso ainda tenha dúvidas sobre o assunto aqi tratado, por favor, poste aqui novamente que o consultor voltará a lhe atender.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar