当asp文本框设置为textmode“date”时,如何限制“year”中的字符?

时间:2017-01-02 16:23:24

标签: asp.net

我将ASP textbox文字模式设为date,并注意到其“YEAR”组件最多可输入9个字符。

我的问题是,如何限制年份输入字段最多接受4个字符?

<asp:TextBox ID="bday" runat="server" 
    TextMode="Date" 
    CssClass="textbox" 
    style="width: 30%; " >
</asp:TextBox>

3 个答案:

答案 0 :(得分:0)

使用MaxLength属性。

MaxLength="4"

以下是完整代码:

<asp:TextBox ID="bday" runat="server" 
    MaxLength="4"
    TextMode="Date" 
    CssClass="textbox" 
    style="width: 30%; " >
</asp:TextBox>

答案 1 :(得分:0)

将日期作为字符串并使用子串函数。 例如字符串s1 = 01 jan 2017 String s2 = s1.substring(7)只给你2017年 我想这是最简单的方法

答案 2 :(得分:0)

如果您想阻止用户输入错误的值,您应该使用Date Picker ..

  

如果您需要Server-Side验证:

<强> ASPX:

<asp:CustomValidator runat="server" ControlToValidate="bday" ErrorMessage="Not valid format" OnServerValidate="CustomValidator1_ServerValidate" />

C#:

protected void CustomValidator1_ServerValidate(object sender, ServerValidateEventArgs e)
{
    DateTime d;
    e.IsValid = DateTime.TryParseExact(e.Value, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out d);
}
  

或者您可能需要Client-Side验证:

 <asp:RegularExpressionValidator runat="server" ControlToValidate="bday" ValidationExpression="(((0|1)[0-9]|2[0-9]|3[0-1])\/(0[1-9]|1[0-2])\/((19|20)\d\d))$"
        ErrorMessage="Invalid date format." ValidationGroup="Group1" />