entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

TextBox con máscara de entrada.

Quiero crear un .ascx basado en un <asp:TextBox> que tenga máscara de entrada.

La primera pega es que, entre los eventos, no tiene OnKeyPressed, por ejemplo, que me vendría bien para el cometido. Existe el OnTextChanged, pero no me sirve, porque implica salirme del TextBox y quiero que la comprobación la haga mientras lo estoy editando.

Sé qué hay cosas para HTML5, pero la compatibilidad con Firefox es nula. Así que lo descarto.

También, por exigencias del guión, descarto la posibilidad de Javascript.

Apelo a vuestra sabiduría.

0voto

OscarCanfranc comentado

Por cierto, estoy trabajando con .NET 4.0. Lo digo porque sé que en .NET 4.5 existe el atributo TextMode="number" (y otros).

2 Respuestas

1voto

rome Puntos500

Lo suyo es usar el Ajax tool kit: http://www.ajaxtoolkit.net/
y ahí hay un extensor para añadir validaciones y máscaras como por ejemplo: http://www.ajaxtoolkit.net/MaskedEdit/MaskedEdit.aspx

P.D.: Aquí tienes una guía para instalar el toolkit y demás http://www.asp.net/web-forms/tutorials/ajax-control-toolkit/getting-started/get-started-with-the-ajax-control-toolkit-cs

1voto

OscarCanfranc comentado

¿Pero AJAX no implica Javascript?

1voto

rome comentado

Sí y no (bueno, realmente sí y sí XD)

Ajax significa Asynchronous JavaScript And XML

pero añadiendo esos componentes, realmente no vas a usar javascript (aunque internamente los componentes lo usen) si no quieres
Echa un ojo a los ejemplos de http://www.ajaxtoolkit.net/ y verás que ahí no hay código javascript.

Tú vas a poner una directiva tal que:

<%@ Register Assembly="AjaxControlToolkit" 
Namespace="AjaxControlToolkit" TagPrefix="cc1" %>

y algo así:

<asp:TextBox ID="FECHA_FINTextBox" runat="server" Text='' />
<cc1:CalendarExtender ID="caFECHA_FINTextBox_CalendarExtender"
 runat="server" FirstDayOfWeek="Monday" 
Format="dd/MM/yyyy" Enabled="True" 
TargetControlID="FECHA_FINTextBox">
</cc1:CalendarExtender>

1voto

rome comentado

Mira, te dejo un ejemplo de máscara de entrada para el formato horas:

<asp:TextBox Width="50px" ID="tbHoraIni" runat="server" />
<cc1:MaskedEditExtender ID="MaskedEditExtender1" runat="server"
TargetControlID="tbHoraIni" Mask="99:0\0:\0\0" 
MaskType="Time" MessageValidatorTip="true" 
OnFocusCssClass="MaskedEditFocus"
ClearMaskOnLostFocus="false" OnInvalidCssClass="MaskedEditError" 
InputDirection="LeftToRight" />

1voto

OscarCanfranc comentado

Gracias. El viernes lo pruebo (mañana es fiesta) y te cuento.

1voto

OscarCanfranc comentado

Si deshabilito Javascript, los MaskedEdit no funcionan como deberían.
De todas formas, gracias por el aporte: me pueden venir bien en otras ocasiones.

1voto

CJF2014 Puntos420

Intentaste utilizar los controles de validación? Puedes aprovechar el RegularExpressionValidator, al cual le asignas un control y una mascara (o expresión regular). En el caso de solo números seria esta:

^\d+$    : Admite 1 o mas digitos

^\d*$    : Admite 0 o mas digitos.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta