当我要禁用一个场景的当前日期和其他场景的未来日期时,是否可以禁用日期。如何禁用日期?
发布于 2013-10-09 00:42:41
You can add a min or max attribute to the input type=date。日期必须为ISO格式(yyyy-mm-dd)。这在许多移动浏览器和当前版本的Chrome中都是支持的,尽管用户可以在不使用日期选择器的情况下手动输入无效的日期。
<input name="somedate" type="date" min="2013-12-25">min和max属性必须是完整的日期;无法指定"today“或"+0”。为此,您需要使用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表单的所有其他情况一样,您应该始终在服务器端验证字段,而不管如何在客户端对其进行约束。
发布于 2019-06-07 02:15:14
在纯超文本标记语言中,您可以对日期施加的唯一限制是通过min和max属性设置的日期的上下限。在下面的示例中,只允许我发布此问题的一周的日期,其他日期显示为灰色,单击它们不会更新输入值:
<input type="date" min="2019-06-02" max="2019-06-08"/>
您还可以使用几行JavaScript禁用任何无效的日期,但这并不包含所有的原生<input type="date">特性,如灰显日期。您可以做的是将日期值设置为''。如果日期无效,还会显示一条错误消息。下面是一个不接受周末日期的输入示例:
// 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 = '';
}
}<input type="date"/>
发布于 2013-06-19 11:50:47
HTML datepicker (<input type=date>)支持min/max属性,但它是not widely supported。
同时,您可以考虑使用github上的1.2.0版本的bootstrap-datepicker。
参考文献:
W3C spec
https://stackoverflow.com/questions/17182544
复制相似问题