推荐使用 laydate 2.8+ 内置 clear 按钮,配置 btns: ['clear'] 即可自动清空并同步重置 min/max 等内部状态;若手动清空需设置 input.value 为空并触发 change 事件,联动场景还需手动重置对应配置。
直接清空输入框的 value 就能生效,但仅清空 dom 值不等于重置组件内部状态——尤其在联动、范围限制、旧版本中容易出问题。必须结合场景选对方法。
btns: ['clear'] 启用内置清空按钮(推荐新版本)
2.8+ 版本 laydate 已原生支持,配置即用,不写 JS 也能清空且同步更新组件内部 min/max 等状态。
-
btns数组里必须显式包含'clear',只写['confirm']不会显示清空按钮 - 清空后会触发
done回调,value为空字符串,date和endDate为null - 如果同时用了
min/max联动(比如双日期控件互锁),启用clear按钮后,laydate 会自动还原这些配置项到初始值(如{year: 1900, month: 0, date: 1}),避免残留影响 - 不支持自定义按钮文案或图标,样式固定,适合快速交付
手动清空 input.value 并触发 change(通用兼容方案)
适用于所有版本,但仅操作 DOM 不足以解除联动约束,需额外干预配置项。
- 执行
document.getElementById('xxx').value = ''或$('#xxx').val('')只清空显示值 - 必须手动触发
change事件,否则表单验证、Vue/React 的双向绑定可能不响应:elem.dispatchEvent(new Event('change')) - 若存在时间范围联动(如 end.min 依赖 start),清空后需同步重置对应实例的
config.min或config.max,否则下次打开仍受限 - 旧版本(onClear 回调,只能靠
done判断value === ''来识别清空动作
销毁再重建实例(解决联动残留最彻底)
当手动清空 + 配置重置仍失效(例如弹窗复用、多次渲染后状态错乱),这是唯一可靠方式。
- 调用
laydate.render()返回的实例没有公开的 destroy 方法,只能靠 DOM 移除 + 重新初始化 - 先移除原始
input元素:$(elem).remove(),再插入新input并调用laydate.render() - 注意:必须确保新
input的id或选择器与原配置一致,否则render()找不到目标 - 此法开销略大,但能完全清除缓存、事件监听和配置污染,适合弹窗内反复打开关闭的场景
真正麻烦的不是“怎么清”,而是清完之后组件是否还记着上次的 min、max 或已绑定的回调。联动逻辑越复杂,越要优先考虑 btns: ['clear'];若必须手动清空,别忘了同步清理 config 对象里的约束字段——这点最容易被忽略。











