首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >禁用html5日期选择器中的某些日期

禁用html5日期选择器中的某些日期
EN

Stack Overflow用户
提问于 2013-06-19 11:45:10
回答 5查看 123.4K关注 0票数 46

当我要禁用一个场景的当前日期和其他场景的未来日期时,是否可以禁用日期。如何禁用日期?

EN

回答 5

Stack Overflow用户

发布于 2013-10-09 00:42:41

You can add a min or max attribute to the input type=date。日期必须为ISO格式(yyyy-mm-dd)。这在许多移动浏览器和当前版本的Chrome中都是支持的,尽管用户可以在不使用日期选择器的情况下手动输入无效的日期。

代码语言:javascript
复制
<input name="somedate" type="date" min="2013-12-25">

minmax属性必须是完整的日期;无法指定"today“或"+0”。为此,您需要使用JavaScript或服务器端语言:

代码语言:javascript
复制
var today = new Date().toISOString().split('T')[0];
document.getElementsByName("somedate")[0].setAttribute('min', today);

http://jsfiddle.net/mblase75/kz7d2/

只排除今天,而允许过去或未来的日期,在这里不是一个选项。但是,如果您希望明天是min日期(删除今天和所有过去的日期),请参见this question以将today递增一天。

与涉及HTML表单的所有其他情况一样,您应该始终在服务器端验证字段,而不管如何在客户端对其进行约束。

票数 78
EN

Stack Overflow用户

发布于 2019-06-07 02:15:14

在纯超文本标记语言中,您可以对日期施加的唯一限制是通过minmax属性设置的日期的上下限。在下面的示例中,只允许我发布此问题的一周的日期,其他日期显示为灰色,单击它们不会更新输入值:

代码语言:javascript
复制
<input type="date" min="2019-06-02" max="2019-06-08"/>

您还可以使用几行JavaScript禁用任何无效的日期,但这并不包含所有的原生<input type="date">特性,如灰显日期。您可以做的是将日期值设置为''。如果日期无效,还会显示一条错误消息。下面是一个不接受周末日期的输入示例:

代码语言:javascript
复制
// Everything except weekend days
const validate = dateString => {
  const day = (new Date(dateString)).getDay();
  if (day==0 || day==6) {
    return false;
  }
  return true;
}

// Sets the value to '' in case of an invalid date
document.querySelector('input').onchange = evt => {
  if (!validate(evt.target.value)) {
    evt.target.value = '';
  }
}
代码语言:javascript
复制
<input type="date"/>

票数 9
EN

Stack Overflow用户

发布于 2013-06-19 11:50:47

HTML datepicker (<input type=date>)支持min/max属性,但它是not widely supported

同时,您可以考虑使用github上的1.2.0版本的bootstrap-datepicker

参考文献:

W3C spec

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17182544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档