You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 01:48:03