【问题标题】:validate textbox for date of birth验证出生日期的文本框
【发布时间】:2012-03-10 18:34:33
【问题描述】:

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

  1. 文本框不能为空
  2. 文本框日期格式应为 dd/mm/yyyy
  3. 文本框日期不应大于当前日期。 IE;没有未来日期(显示错误,例如 -U r not Born yet dude)

<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 包装器中,因此只有客户端验证才有效。 这里的任何人,请帮助我提供任何提示、建议或工作代码!!。我会非常充实,因为我从早上就开始工作了

【问题讨论】:

标签: c# javascript asp.net regex validation


【解决方案1】:

您可以在您的 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()
    }
}

【讨论】:

  • 非常感谢...你 gr8 :)。这就像一个魅力,正是我正在寻找的......
【解决方案2】:

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

你可以做一个简单的DateTime.TryParse([string value]),然后检查以确保日期是过去的

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      你应该试试这个。我会完美运行。您也可以使用“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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-24
        • 1970-01-01
        • 1970-01-01
        • 2022-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-29
        相关资源
        最近更新 更多