【问题标题】:Date validation via dropdown通过下拉列表验证日期
【发布时间】:2019-09-03 20:07:12
【问题描述】:

我们都知道<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) 获取当前月份并添加到&lt;optgroup label="[MONTH]"&gt; 2) 获取当前日期 3) 计算剩余日期,然后将它们回显到自己的 'DD/MM/YYYY`

我不想每天都删除前一天的日期,我不太确定如何生成此日期,但我之前在网站上看到过日期下拉菜单。

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

我没有任何工作代码,因为我不确定最佳方法。任何 cmets、指针或代码将不胜感激。

【问题讨论】:

    标签: php html date


    【解决方案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>';
    ?>
    

    【讨论】:

    • 英雄!对此感激不尽。这似乎是最好的方法。有没有办法让下拉菜单显示日期、月份和年份?
    • 当然。我做了一个改变。下拉菜单现在显示 d/m/y
    • @learningtoanimate 没问题,很高兴我能帮上忙。祝你的项目好运。
    猜你喜欢
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多