HTML5 原生 不支持节假日禁用,因其仅识别 min、max 和 disabled 属性,无法按日粒度动态禁用特定日期;可行方案是使用 flatpickr 等第三方日历组件,并配合准确的节假日判断逻辑。
HTML5 原生 不支持节假日禁用,这是浏览器底层限制,所有所谓“纯 HTML5 实现节假日禁用”的说法都不成立。
min、max 和 disabled 无法禁用节假日原生日期控件只认 min、max(时间范围)和 disabled(整控件禁用),不支持按日粒度动态禁用特定日期。你无法用 HTML 属性写“2025-01-28 禁用”“2025-02-01 禁用”这种逻辑。
disabled 是禁用整个输入框,不是禁用某天min/max 只接受单个日期字符串,不能传数组或函数
input[type="date"]
真正能禁用节假日的,是第三方日历库(如 flatpickr、Pikaday、Element Plus 的 el-date-picker)或自己封装的日期选择器,它们在 DOM 层绘制日历,可自由控制每个日期单元格的 disabled 状态。
disable 选项,传入日期数组或函数:flatpickr("#date", {
disable: ["2025-01-28", "2025-02-01", ...],
// 或
disable: date => isHoliday(date)
});disableDayFn 接收函数,返回 true 即禁用该日ant-design 的 DatePicker 用 disabledDate 函数实现同效果没有通用的“节假日数据库”内建在浏览器里。你需要:
china-holidays(注意其仅覆盖法定假日,不含地方性调休)isHoliday(new Date("2025-02-01")) 必须返回 true,而 isHoliday(new Date("2025-02-03"))(调休上班日)应返回 false —— 很多方案漏掉这点,导致把调休日也禁用了真正的难点不在禁用动作本身,而在节假日数据的准确性与时效性;哪怕用了 flatpickr,若 disable 数组漏掉某天或错标了调休日,用户照样能选到不该选的日期。
来电咨询