通过下拉菜单进行日期验证

时间:2019-09-03 20:07:12

标签: php html date

我们都知道<input type="date">对于需要选择将来日期的表单并不理想。

我的想法是创建一个仅列出当前日期和该年剩余时间的每个日期的下拉列表。

<select>
<option value="Not Selected" disabled selected>Please select a date.</option>

<optgroup label="September">
<option value="1st">Sunday 1st</option>
<option value="etc">Rest of month</option>


<optgroup label="October">
<option value="1st">Tuesday 1st</option>
<option value="etc">Rest of month</option>


<optgroup label="November">
<option value="1st">Friday 1st</option>
<option value="etc">Rest of month</option>


<optgroup label="December">
<option value="1st">Sunday 1st</option>
<option value="etc">Rest of month</option>
</select>

这将使我可以更好地控制用户输入,而无需验证未来的日期。当然,我可以为当前版本使用类似php echo date的方式,但要求是;

1)获取当前月份并添加到<optgroup label="[MONTH]"> 2)获取当前日期 3)计算剩余日期,然后将其回显到自己的'DD / MM / YYYY`

我不想每天都删除前一天的日期,我不太确定如何生成该日期,但是以前我在网站上看到过日期下拉列表。

最好使用DD / MM / YYYY格式,他们也不需要阅读星期几,我知道这需要更多工作。

我没有任何有效的代码,因为我不确定最好的方法。任何注释,指针或代码都将不胜感激。

1 个答案:

答案 0 :(得分:1)

这应该或多或少为您做到:

<?php
$now = time();
$month = date('m', $now);
$day = date('j', $now);
$year = date('y', $now);
echo '<select>';
echo '<option value="Not Selected" disabled selected>Please select a date.</option>';
for ($m = $month; $m <= 12; $m++) 
{
    echo '<optgroup label="' . date("F", strtotime("$year-$m-01")) . '">';
    $startDay = $m == $month ? $day : 1;
    for ($d = $startDay; $d <= cal_days_in_month(CAL_GREGORIAN, $m, $year); $d++)
    {
        echo '<option value="' . $d . '">' . $d . '/' . $m . '/' . $year . '</option>' . "\n";
    }
}
echo '</select>';
?>