Máscara numérica
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?
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
Curtidas 0
Respostas
Luiz Maia
25/06/2009
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
GOSTEI 0
Devmedia
25/06/2009
Valter,
a resposta do consultor foi suficiente? Podemos encerrar o chamado?
a resposta do consultor foi suficiente? Podemos encerrar o chamado?
GOSTEI 0
Devmedia
25/06/2009
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.
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.
GOSTEI 0