Сделайте 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>
Если вы _только_ проверки на стороне клиента, то, как вы действительно проверяющий вход? Это можно обойти. И ваша проверка на стороне сервера для будущих дат так же проста, как сравнение _greater/less than_. –
datepicker.Date
@Thomas: я отредактировал вопрос с кодом файла cs, чтобы показать, как я проверяю в mvc, как я могу добавить еще проверку на будущую дату? –