如何避免Keith Wood datepick日历插件点击日期后自动切换月份
Keith Wood datepick双月显示点击右侧月份自动滚动解决方法
该交互为插件默认行为:多月份显示时,插件默认会将选中日期所在的月份调整为显示组的第一个月份,导致整体月份滚动。
方案1:修改初始化配置(优先使用)
直接在初始化参数中添加adjustRange: false即可关闭自动调整逻辑,完整配置参考:
$('#datepickElem').datepick({ monthsToShow: 2, // 你原有保留的双月显示配置 adjustRange: false, // 核心配置:禁止自动调整月份显示范围 // 其他原有配置保持不变 });
如果使用的是低版本插件,上面配置不生效的话,增加changeMonth限制:
$('#datepickElem').datepick({ monthsToShow: 2, changeMonth: false, // 禁止默认的月份切换行为 onSelect: function(dates) { // 自行处理日期选中后的业务逻辑,比如赋值给输入框 $(this).val($.datepick.formatDate('yyyy-mm-dd', dates[0])); } });
方案2:强制锁定显示起始月份(兜底方案)
如果配置修改无效,可以通过回调强制固定显示的月份范围,避免跳转:
// 初始化时记录需要固定的起始显示月份,这里默认当月,可自行修改 const fixedStartMonth = new Date(); fixedStartMonth.setDate(1); $('#datepickElem').datepick({ monthsToShow: 2, onShow: function() { // 每次弹出时强制设置显示的起始月 $(this).datepick('setDate', fixedStartMonth, { changeMonth: true }); }, onSelect: function(dates) { // 选中日期后重置显示起始月,防止跳转 setTimeout(() => { $(this).datepick('setDate', fixedStartMonth, { changeMonth: true }); }, 10); // 此处添加你自己的选中后业务逻辑 } });
内容的提问来源于stack exchange,提问作者user0505123456
相关产品推荐
相关产品推荐

