使用datetimepicker的endDate配置时能否启用日历下一页按钮选择未来日期
问题结论
你当前配置的endDate: '-18y'本身就是组件用来限制可选最大日期为距今18年前的参数,该参数生效时组件会默认禁用所有晚于该日期的选项、同时禁用跳转到更晚年月的翻页按钮,默认规则下无法在保留该配置的同时放开未来日期选择,二者逻辑冲突。
如果你的需求是允许用户翻页选择日期,可按需选择以下两种方案:
方案1:完全放开日期限制,无需18岁年龄校验
直接删除初始化配置中的endDate: '-18y'参数即可,组件会自动恢复翻页按钮功能,支持选择所有晚于startDate的日期(含未来日期)。
修改后的JS代码如下:
$('.form_date').datetimepicker({ language: 'fr', weekStart: 1, todayBtn: 0, autoclose: 1, todayHighlight: 1, startView: 2, minView: 2, forceParse: 0, startDate: "1921-01-01 10:00", pickerPosition:'bottom-left' });
原有HTML代码无需改动。
方案2:放开翻页限制,同时保留年满18岁的校验规则
如果既要允许用户翻到后续年月选择日期,又要限制最终提交的出生日期必须满足年满18岁的要求,可移除组件层面的endDate限制,新增自定义选择后校验逻辑即可:
$('.form_date').datetimepicker({ language: 'fr', weekStart: 1, todayBtn: 0, autoclose: 1, todayHighlight: 1, startView: 2, minView: 2, forceParse: 0, startDate: "1921-01-01 10:00", pickerPosition:'bottom-left' // 移除endDate: '-18y'配置 }).on('changeDate', function(e){ // 自定义年满18岁校验 const selectedTime = e.date.getTime(); const eighteenYearsAgo = new Date(); eighteenYearsAgo.setFullYear(eighteenYearsAgo.getFullYear() - 18); if(selectedTime > eighteenYearsAgo.getTime()){ alert('出生日期需距今满18年,请重新选择'); $(this).val(''); // 清空不符合规则的选中值 // 触发原有绑定的change逻辑 showsunsign(); showseldate('bdate1'); } });
原有HTML代码无需改动。
内容的提问来源于stack exchange,提问作者user3181077
相关产品推荐
相关产品推荐

