2013-06-18 2 views
0

Я работаю над mvc 4 с asp.net, я хочу подтвердить дату рождения, чтобы пользователь не мог выбрать будущую дату, как я могу это сделать?Регулярное выражение, которое проверяет дату в будущем

<script> 
    $(document).ready(function() { 
     $("#DOB").datepicker({ 
      dateFormat: "m/d/yy", 
     }); 
    }); 
</script> 
@Html.TextBox("DOB", Model.DOB.ToString("MM/dd/yyyy"), new { @class = "cssClass" }) 

Я не хочу, чтобы проверка на стороне сервера я хочу проверить на стороне клиента. могу ли я проверить его с регулярным выражением?

Решение:

$(document).ready(function() { 
     $("#DOB").datepicker({ 
      dateFormat: "m/d/yy", 
     }).change(function() { 
      var date = new Date($("#DOB").val()); 
      var now = new Date(); 
      if (date > now) { 
       alert("Please enter valid date."); 
      } 
     }); 
    }); 
+0

Если вы _только_ проверки на стороне клиента, то, как вы действительно проверяющий вход? Это можно обойти. И ваша проверка на стороне сервера для будущих дат так же проста, как сравнение _greater/less than_. –

+4

datepicker.Date

+0

@Thomas: я отредактировал вопрос с кодом файла cs, чтобы показать, как я проверяю в mvc, как я могу добавить еще проверку на будущую дату? –

ответ

0

Сделайте 3 поля для дня, месяца и года, как почти любой сайт в Интернете.
Заполните поля значениями.
Затем вы можете заполнить выпадающий год в соответствии с вашими пожеланиями.
И вы можете просто использовать событие изменения для проверки других полей.
Плюс вы можете просто использовать день + месяц + год, сделать значение даты и сравнить с вашим_знаком < = новая дата()
В противном случае вам придется беспокоиться обо всех различных форматах даты, которые может иметь строка, что делает ее невозможно проверить его.

Смотрите здесь:
Birthday form using HTML/PHP

Что-то вроде этого:

<!doctype html> 
<html itemscope="itemscope" itemtype="http://schema.org/WebPage"> 

<head> 

    <title>Hello</title> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" ></script> 


    <script type="text/javascript"> 


     function isLeapYear(iYear) 
     { 
      return (new Date(iYear, 1, 29).getMonth() == 1); 
     } 

     function getMonthLength(month, year) 
     { 
      month = month - 1; 

      var monthStart = new Date(year, month, 1); 
      var monthEnd = new Date(year, month + 1, 1); 
      var monthLength = (monthEnd - monthStart)/(1000 * 60 * 60 * 24); 

      return monthLength; 
     } 


     function PopulateDayDropdown(iMonth, iYear) 
     { 
      for (i = 1; i < getMonthLength(iMonth, iYear) + 1; i++) 
      { 
       $('<option/>').val(i).html(i).appendTo('#selDay'); 
      } 


     } 

     function PopulateMonthDropdown() 
     { 

      var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; 



      for (i = 0; i < months.length; i++) 
      { 
       $('<option/>').val(i + 1).html(months[i]).appendTo('#selMonth'); 
      } 

     } 


     function PopulateYearDropdown() 
     { 

      var iCurYear = new Date().getFullYear(); 

      for (i = iCurYear - 100; i <= iCurYear; i++) 
      { 
       $('<option/>').val(i).html(i).appendTo('#selYear'); 
      } 

      //$('select option[value="' + iCurYear + '"]').html(); 
      $('#selYear option[value="' + iCurYear + '"]').attr("selected", "selected") 

     } 



     $(document).ready(function() 
     { 
      // Handler for .ready() called. 
      PopulateDayDropdown(1, new Date().getFullYear()); 
      PopulateMonthDropdown(); 
      PopulateYearDropdown(); 



      //$('select[name="month"]').change(function() 
      $('select').change(function() 
      { 
       //alert("2012 leap year? " + isLeapYear(2012) + "\n" + "2013 leap year? " +); 

       var iDay = $("#selDay").val(); 
       var iMonth = $("#selMonth").val(); 
       var iYear = $("#selYear").val(); 

       if (this.id == "selMonth" || this.id == "selYear") 
       { 
        $('#selDay').empty(); 
        PopulateDayDropdown(iMonth, iYear); 
        $('#selDay option[value="' + iDay + '"]').attr("selected", "selected") 
       } 


       if (iDay > getMonthLength(iMonth, iYear)) 
       { 
        var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; 
        alert("There is no " + iDay + "th " + months[iMonth - 1] + "."); 

       } 



       var d = new Date(iYear, iMonth - 1, iDay, 0, 0, 0, 0); 


       if (d > new Date()) 
       { 
        $('#selDay option[value="' + 1 + '"]').attr("selected", "selected") 
        $('#selMonth option[value="' + 1 + '"]').attr("selected", "selected") 
        alert("Future dates are not allowed (values have been reset to January 1st)."); 
        return; 
       } 


       alert("New date of birth: " + d); 

      }); 


     }); 

    </script> 


</head> 


<body> 


<form action="registration.php" method="post"> 

    <p>Select date:</p> 


    <select id="selDay" name="day"> 
    </select> 



    <select id="selMonth" name="month"> 
    <!-- 
    <option value="January">January</option> 
    <option value="February">February</option> 
    <option value="Mars">Mars</option> 
    <option value="April">April</option> 
    <option value="May">May</option> 
    <option value="June">June</option> 
    <option value="July">July</option> 
    <option value="September">September</option> 
    <option value="October">October</option> 
    <option value="November">November</option> 
    <option value="December">December</option> 
    --> 
    </select> 

    <select id="selYear" name="year"> 

    </select> 

    <br/><br/> 

    <input type="submit" value="Submit" /> 

</form> 

</body> 
</html> 
Смежные вопросы