文本框只应接受日期

时间:2014-03-03 17:43:50

标签: asp.net sql vb.net sql-server-2008

我有一个网页表单中有几个date字段,我使用Ajax日历为用户输入日期,我想限制用户输入除了以外的额外信息日期甚至无法在文本框中输入任何内容,除了日历扩展器的值。我正在使用ASP.NET,VB.NET和SQL Server 2008数据库

我的日期格式为dd-MMM-yy

我试过了:

Enable = false 

但它没有将日期保存到数据库

以下是我的代码示例:

<asp:TextBox ID="TextBox5" runat="server" Width="150px" style="margin-top: 0px" 
                            ReadOnly="False" CausesValidation="True"></asp:TextBox>

<asp:CalendarExtender ID="TextBox5_CalendarExtender" runat="server" Format="dd-MMM-yy" PopupButtonID="ImageButton1" TargetControlID="TextBox5">
</asp:CalendarExtender>

感谢您的帮助

谢谢

3 个答案:

答案 0 :(得分:1)

首先,您需要在后面的代码中将文本框设置为“只读”,通常在Page_Load事件中,如下所示:

TxtDate.Attributes.Add("readonly","readonly");

接下来,在标记中修改文本框的设计如下:

   <asp:TextBox ID="TxtDate" runat="server" Width="150px"></asp:TextBox>

    <a href="JavaScript:clearText('<%=TxtDate.ClientID %>')">
    <img alt="" src="../clear.png"></img></a>
    <asp:CalendarExtender ID="CalendarExtender1" runat="server" Enabled="True" 
    Format="dd-MMM-yy" PopupPosition="Right" TargetControlID="TxtDate">      
</asp:CalendarExtender>

最后添加这个小脚本来清除日期:

   <script type="text/javascript">
        function clearText(ctrl) {
            document.getElementById(ctrl).value = "";
        };

通过执行此操作,您将在单击文本框时弹出日历,它将不允许用户键入,并且当用户单击与文本框关联的“清除”图像时,它将明确文本。

答案 1 :(得分:0)

请勿设置ReadOnly = TrueEnabled = False以防止回发该值。您只需要阻止用户交互,同时允许值可更新。一种方法是防止字段获得焦点,尝试添加此属性:

onfocus = "this.blur();"

如需更多信息,请查看this post

答案 2 :(得分:0)

设置Readonly属性不会导致服务器端进程。我们可以使用 contentEditable =“false”它将在服务器端提供