验证文本框的出生日期

时间:2012-02-20 12:02:23

标签: c# javascript asp.net regex validation

以下代码用于验证出生日期的文本框。条件是

  1. 文本框不能为空
  2. 文本框日期格式应为dd / mm / yyyy
  3. 文本框日期不应大于当前日期。即;没有未来的日期(显示错误,如-U r尚未出生的老兄)

  4. <asp:TextBox ID="txtDateOfBirth" runat="server" CausesValidation="True" />
              (dd/mm/yyyy e.g. : 12/12/2011)
    <asp:CustomValidator runat="server" ID="valDateRange" ControlToValidate="txtDateOfBirth" ErrorMessage="enter valid date" />
    

    但问题是,文本框位于ajax包装器内,因此只有客户端验证才有效。 在这里任何人,Plz帮我提供任何提示,建议或工作代码!!我会非常满意,因为我从早上起就开始研究

4 个答案:

答案 0 :(得分:3)

您可以在CustomValidator上拥有ClientValidationFunction属性......

<asp:CustomValidator runat="server" ID="valDateRange" ControlToValidate="txtDateOfBirth" ErrorMessage="enter valid date" ClientValidationFunction="validateDate" />

然后创建一个Javascript函数:

function validateDate(sender, e) {

    // Split out the constituent parts (dd/mm/yyyy)    
    var dayfield = e.Value.split("/")[0];
    var monthfield = e.Value.split("/")[1];
    var yearfield = e.Value.split("/")[2];

    // Create a new date object based on the separate parts
    var dateValue = new Date(yearfield, monthfield - 1, dayfield)

    // Check that the date object's parts match the split out parts from the original string
    if ((dateValue.getMonth() + 1 != monthfield) || (dateValue.getDate() != dayfield) || (dateValue.getFullYear() != yearfield)) {
        e.IsValid = false;
    }

    // Check for future dates
    if (e.IsValid) {
        e.IsValid = dateValue <= new Date()
    }
}

答案 1 :(得分:1)

我同意varangian_12的回答,但请务必对用户禁用Javascript的情况进行某种服务器端验证,或者禁用它以绕过您的验证

您可以执行简单的DateTime.TryParse([string value]),然后检查以确保日期发生在过去

您只需要确保处理边缘情况

答案 2 :(得分:0)

无需使用valodators,使用requiredfieldvalidator检查是否为空,并使用jquery日期选择器使字段在获得焦点时具有日期日历,

这是一个非常简单的示例,如果您需要任何帮助,请告诉我:http://jqueryui.com/demos/datepicker/

答案 3 :(得分:0)

你应该试试这个。我会跑得很完美。你也可以使用“jquery.validate.js”来使文本框不能为空。同样在css中你必须创建一个类错误

 

颜色为红色。

 

 

   

   

 <p>   type="text/css" media="all" /></p>
<p><script type="text/javascript" src="http://code.jquery.com/jquery-1.4.4.min.js"></script></p>
   

   <p>   type="text/javascript"></script></p>
 <p> <script type="text/javascript"></p>
<p>    $(function () {</p>
  <p>        var minDate = new Date('1/1/1990');</p>
     <p>    var todaysDate = new Date();</p>
     <p>    var maxDate = new Date(todaysDate.getFullYear(),</p>
        <p>                    todaysDate.getMonth(),</p>
             <p>               todaysDate.getDate() - 1);</p>
       <p>  var currentsYear = todaysDate.getFullYear();</p>

        <p> var range = '1900:' + currentsYear</p>
    <p>      $('#txtDOB').datepicker({</p>
     <p>         minDate: minDate,</p>
       <p>       maxDate: maxDate,</p>
       <p>       changeMonth: true,</p>
       <p>       changeYear: true,</p>
       <p>       yearRange: range</p>
      <p>    });</p>
  <p>    });  </p>