我有一个表单,我想让用户输入他们的生日。我有三样东西。一个月,一个日,一个年。我使用php来创建表单。我的问题是,如果有人选择二月作为月份,他们仍然可以选择第31天。每个月有31天。当有人更改月份字段时,我需要使用javascript作出反应吗?我该如何着手解决这个问题?请帮助。这是我的代码…
$today = time();
$f_today = date("M-d-Y", $today);
//The Month
$todayMonth = date("n",$today);
echo "<select id='monthSelect' name='dateMonth'>";
for ($n=1;$n<=12;$n++) {
echo "<option value='$n'";
if ($n == $todayMonth) {
echo " selected='selected'";
}
echo ">$monthName[$n]</option>";
}
echo "</select>";
//The Day
$todayDay = date("d",$today);
echo "<select id='daySelect'name='dateDay'>";
for ($n=1;$n<=31;$n++) {
echo "<option value='$n'";
if ($n == $todayDay) {
echo " selected='selected'";
}
echo ">$n</option>";
}
echo "</select>";
//The Year
$todayYear = date("Y",$today);
echo "<select name='dateYear'>";
for ($n=$todayYear-100;$n<=$todayYear;$n++) {
echo "<option value='$n'";
if($n == $todayYear) {
echo " selected='selected'";
}
echo ">$n</option>";
}
echo "</select><br/><br/>";
您可以使用php的cal_days_in_month(),它将返回日历中给定月份和年份的正确天数。您可以在javascript中使用onchange事件来处理月份和年份元素。因此,当用户选择月份或年份时,调用php脚本(通过AJAX),该脚本使用cal_days_in_month()返回该月份和年份的正确天数。然后使用给定的结果更新#daySelect内容。
当然(就像之前有人建议的那样)在这种情况下,jQuery日期拾取器是一个更好/更简单的解决方案。
可以这样定义关联数组中的月份:array(Jan=>30, Feb=>28,…)。通过onChange处理程序将月份选择框链接到一个JS函数,该函数提取选择框的值(Jan, Feb等)并将其用作arr中的键。使用数组中的值来添加/减去正确的天数。