javascript - 如何在物化日期选择器中禁用相对于特定日期的过去日期,反之亦然
问题描述
**我无法禁用特定日期(如 1970 年 1 月 1 日)的过去日期**
$(document).ready(function(){
$('.datepicker').datepicker({
yearRange: [1970, 2010],
defaultDate: new Date(1970, 1, 0),
minDate: new Date(1970, 0, 1),
maxDate: new Date(2010, 11, 31),
});
});
解决方案
我无法重现您原始问题的错误(请参阅https://jsfiddle.net/px0djq8w/)。不过,我想我找到了您在评论中提到的第二个问题的解决方案。
首先,将minYear
and添加maxYear
到日期选择器初始化选项中。看起来 Datepicker 代码没有为此使用minDate
/ :maxDate
$(document).ready(function(){
$('.datepicker').datepicker({
// ...
minYear: 1970,
maxYear: 2010
});
});
其次,我们需要修复 Materialize Datepicker 库中的两件事,因为我认为缺少两件事:
- 已经有一个用于添加到按钮的和按钮的
.is-disabled
类。现在的问题是,对于按钮,检查它是否应该被禁用为时已晚(在声明按钮之后,~第 9241 行)。它应该是这样的:previous
next
next
previous
if (isMinYear && (month === 0 || opts.minMonth >= month)) {
prev = false;
}
var leftArrow = '<svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z"/><path d="M0-.5h24v24H0z" fill="none"/></svg>';
html += "<button class=\"month-prev" + (prev ? '' : ' is-disabled') + "\" type=\"button\">" + leftArrow + "</button>";
- 现在有一个 CSS 规则来告诉浏览器如何处理一个
.is-disabled
. 导入库的 CSS 后需要添加这条规则:
button.is-disabled {
visibility: hidden; // hide button
pointer-events: none; // disable clicks
}
GitHub问题链接:https ://github.com/Dogfalo/materialize/issues/6541
推荐阅读
- extjs - 网格组合框和文本字段编辑器 - 动态更改 emptyText 并清除字段
- awk - awk 脚本未读取要执行的输入文件
- java - 创建 PDF 并在 ResponseEntity 中返回
- python - 在 Python 中读取对称的 Harwell-Boeing 矩阵
- vb6 - VB6 WinHttpRequest "PUT" - 修改请求头
- javascript - 使用 setInterval 更改文本字段的颜色;
- python - 决定包含分类变量和数值变量的数据集的聚类算法
- javascript - 模态图像成为背景图像的问题
- r - R:变量在节点和数据中具有不同的级别数
- java - 为什么我的行没有更新?