Search code examples
htmlasp.netrangevalidator

validating range of html input date in asp.net


I am using HTML input type date in asp.net. Using range validater to validate date and regular expression to enter to numbers only. If enter date correctly range validater and reqular expression are both showing error.

Sorry for bad english.

<div class="form-group">
  <h5>Date of Birth:</h5>
  <div class="controls ">
    <div class="input-group">
      <span class="input-group-addon"><i class="fa fa-calendar"></i></span>
      <input type="date" name="bday" class="form-control" id="dateofbirth" runat="server">
    </div>
    <span style="color:red;"><asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ErrorMessage="Please Enter Date Of Birth" ControlToValidate="dateofbirth" SetFocusOnError="True"></asp:RequiredFieldValidator></span>
    <span style="color:red;"><asp:RegularExpressionValidator ControlToValidate="dateofbirth" ID="RegularExpressionValidator7" runat="server" ErrorMessage="Please Enter Numbers Only" ValidationExpression="0*[0-9]\d*"></asp:RegularExpressionValidator></span>
    <span style="color:red;"><asp:RangeValidator ID="RangeValidator1" runat="server" ErrorMessage="Your are not eligible " ControlToValidate="dateofbirth"  MaximumValue="DateTime.Now.Date.Value.ToString(yyyy-MM-dd)" MinimumValue="DateTime.Now.AddYears(-18).ToString.Value(yyyy-MM-dd)"></asp:RangeValidator></span>
  </div>
</div>

error in form


Solution

  • one thing is your C# code like the following:

    DateTime.Now.Date.Value.ToString("yyyy-MM-dd")
    

    should be encapsulated by code characters

    <% = DateTime.Now.Date.Value.ToString("yyyy-MM-dd") %>
    

    For the ValidationExpression= It looks like you need to figure out how to make your regex test for ##/##/#### format of that is what you want the date format to be