前段时间遇到一个需求:选择日期和时间,周末禁止选择,自定义禁止时间选择。如图
我鬼使神差竟然用了layui,遇到了好多坑,记录下这次的经历,好记性不如烂笔头,下次可以回来复制黏贴,哈哈哈。
1. 添加禁止class:laydate-disabled
经过观察,禁止选择的日期,class上会有 laydate-disabled
(1) 第一版:遍历所有日期.layui-laydate-content td,
当日期 等于 2023-1-10 ,
则添加 class:laydate-disabled;
2023-1-10 的这一天就不能被选择了。
(2) 第二版:周末禁止选择,自定义禁止时间选择。
强制修改layui的mark(标记重要的日子),用来当成自定义禁止的日期。
当来到第二版的时候,非常好,一度以为已经实现了功能,NONONONONONONONONONO, 有不可逆反的BUG,啥bug我忘了,哈哈哈哈哈。
2. 修改官方layui的日期和时间选择器的js
修改代码github地址: GitHub - zstings/laydate: 一款被广泛使用的高级 Web 日历组件,完全开源无偿且颜值与功能兼备,足以应对日期相关的各种业务场景
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="./laydate/theme/default/laydate.css">
</head>
<body>
<input type="text" id="demoTest" placeholder="yyyy-MM-dd">
<script src="./laydate/laydate--.js"></script>
<script>
laydate.render({
elem: '#demoTest',
type: 'datetime',
min: '2023-01-05', // 最小日期
max: '2023-01-15', // 最大日期
disabled: ['2023-01-08', '2023-01-13'], // 对特定日期禁用
weekend: 'disabled', // 禁用周六日
timesOption: [ // 自定义配置时分秒
[9, 10, 11, 15, 16, 17, 18],
[0, 30]
],
btns: ['clear', 'confirm'],
ready: function (date) {
},
change: function (value, date) {
}
});
</script>
</body>
</html>
layui+jq,绝配贼好用,很可惜已经不维护了,有些坑:比如最大时间和最小时间的bug;layui.js为啥给变量小时分秒给一个常量0,0,0,而不是动态赋值。