【问题标题】:HTML5 input type date disable dates before todayHTML5 输入类型日期禁用今天之前的日期
【发布时间】:2016-07-28 13:49:29
【问题描述】:

有没有办法在 HTML5 <input type="date"> 中禁用今天之前的日期? 我尝试过:<input type="date" min="<?php echo $today; ?>">,但这仅适用于桌面浏览器...safari mobile 仍然允许之前滚动日期。

【问题讨论】:

标签: html


【解决方案1】:

输入日期必须为 ISO 格式(移动浏览器支持)。

HTML5 无法做到这一点。

但使用 Javascript,您可以执行以下操作:

<input name="setTodaysDate" type="date">

和;

var today = new Date().toISOString().split('T')[0];
document.getElementsByName("setTodaysDate")[0].setAttribute('min', today);

这个小脚本会将min 更改为 ISO 格式的今天日期。

此处的示例:jsFiddle

【讨论】:

  • 这只是在桌面本机日期选择器日历上工作。不在智能手机上。
  • 找到解决方案了吗? 2 年了,仍然没有解决这个讨厌的问题!
【解决方案2】:

var today = new Date();
var dd = today.getDate();
var mm = today.getMonth() + 1; //January is 0!
var yyyy = today.getFullYear();
if (dd < 10) {
  dd = '0' + dd
}
if (mm < 10) {
  mm = '0' + mm
}

today = yyyy + '-' + mm + '-' + dd;
document.getElementById("datefield").setAttribute("max", today);
&lt;input id="datefield" type='date' min='1899-01-01' max='2000-13-13'&gt;&lt;/input&gt;

【讨论】:

  • 几乎所有这些代码都不需要:只需使用var today = new Date().toISOString().slice(0,10);
  • @HereticMonkey 你的 ISO 有点问题,因为它可能会在第二天出现 - 这取决于你的时区..
【解决方案3】:

如果你使用的是 PHP,那就太简单了

<input class="form-control" type="month" min="<?php echo date('Y'); ?>" name="ex_rate_date" required>

【讨论】:

    【解决方案4】:

    你可以试试这个:

    <input type="date" name="bday" min="<?= date('Y-m-d'); ?>">
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-02
      • 1970-01-01
      相关资源
      最近更新 更多