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

TempusDominus Bootstrap4日期选择器禁用未来日期及选当前日期异常

解决TempusDominus Bootstrap4 Datetimepicker首次无法选择当前日期的问题

嘿,我之前也碰到过这个坑!结合你的配置来看,问题大概率出在脚本冲突、重复ID或者配置兼容性上,给你一步步拆解解决:

1. 先解决最致命的问题:重复加载jQuery

你布局里同时加载了jquery-1.11.3.min.js和jquery-2.2.0.min.js,这绝对会导致插件行为异常!jQuery不能重复引入,后面加载的版本会覆盖前面的,而TempusDominus初始化时可能绑定到了旧版本的jQuery上,后续交互又用了新版本,就会出现这种“第一次不行第二次行”的诡异情况。

解决方法:删掉其中一个jQuery引用,建议保留jquery-2.2.0.min.js(版本更贴合Bootstrap 4的要求),确保整个页面只有一个jQuery实例。

2. 修复HTML中的重复ID

你的容器div和输入框都用了id="datetimepicker4",这违反了HTML的ID唯一性规则!jQuery选择器会优先匹配第一个元素,导致日期选择器的事件绑定混乱,初始化不完整。

修改HTML结构,给输入框换个ID:

<div class="input-group date" id="datetimepicker4" data-target-input="nearest">
  <input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker4" name="date" id="datePickerInput"/>
  <div class="input-group-append custom-datetimepicker" data-target="#datetimepicker4" data-toggle="datetimepicker">
    <div class="input-group-text"><i class="fa fa-calendar"></i></div>
  </div>
</div>

3. 调整日期配置,用Moment.js对象代替原生Date

TempusDominus是基于Moment.js开发的,用原生new Date()可能会有兼容性问题,尤其是和useCurrent: false组合时,首次渲染可能没正确识别当前日期的可选状态。

把maxDate改成Moment对象:

$(function () {
  $('#datetimepicker4').datetimepicker({
    format: 'L',
    useCurrent: false,
    maxDate: moment() // 用moment()替代new Date()
  });
});

4. 排查掩码插件的冲突

你加载了jquery.inputmask.bundle.js和jquery.mask.js两个掩码插件,它们会修改输入框的输入行为,可能和日期选择器的事件触发冲突。

测试方法:暂时注释掉这两个插件的引用,看看日期选择器是否恢复正常。如果正常,那就是掩码插件的问题,你可以:

  • 只给需要掩码的输入框应用掩码规则,排除日期选择器的输入框;
  • 调整掩码配置,确保和日期选择器的格式'L'兼容(不同地区L对应的格式不同,比如美式是MM/DD/YYYY,欧式是DD/MM/YYYY)。

最后验证脚本加载顺序

确保所有依赖脚本的加载顺序正确,应该是:

  • jQuery
  • Moment.js
  • Popper.js
  • Bootstrap JS
  • TempusDominus Bootstrap4 JS

按照上面的步骤调整后,应该就能解决首次无法选择当前日期的问题了!

内容的提问来源于stack exchange,提问作者Meena

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 12:27:46