应使用 change 事件监听日期变化,它在所有主流浏览器中一致可靠;需确保 DOM 加载完成后再绑定,且处理空值和 YYYY-MM-DD 字符串转 Date 对象时注意 Safari 兼容性。

HTML <input type="date"> 怎么监听选中日期变化?
直接用 change 事件最可靠,input 事件在部分浏览器(尤其是 Safari 和旧版 Chrome)对日期输入框支持不稳定,可能不触发或重复触发。
关键点:用户点击日历控件选日期、手动输入并失焦、清空后失焦——这些操作都会触发 change,且只在值真正改变后触发一次。
-
change是唯一被所有主流浏览器一致支持的事件 - 不要依赖
input,它在 Safari 中对type="date"几乎无效 - 避免用
blur,它无法区分“值是否真的变了”
为什么 addEventListener('change', ...) 有时不生效?
常见原因是绑定时机太早——DOM 还没加载完,就去查 document.getElementById(...),结果拿到 null;或者元素是动态插入的,但事件监听器没重新绑定。
- 确保脚本放在



















