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.

OscarCanfranc comentado Ago 14, 2013

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

OscarCanfranc comentado Ago 14, 2013

¿Pero AJAX no implica Javascript?

rome comentado Ago 14, 2013

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>

rome comentado Ago 14, 2013

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" />

OscarCanfranc comentado Ago 14, 2013

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

OscarCanfranc comentado Ago 16, 2013

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.

¿Conoces alguien que puede responder?
¡Comparte esta pregunta!


Actividad Reciente

¿Eres Usuario Apple?

...

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

Conecta