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

使用Bootstrap Datepicker设置日期格式遇问题:无法更新输入框值

Bootstrap Datepicker输入框无法更新为指定格式的解决方案

问题原因

你当前代码的核心问题是:调用$("#date-input").datepicker("update", formattedDate)时,传入的带星期的格式化字符串不符合初始化时设置的format: "mm/dd/yyyy"格式,Bootstrap Datepicker无法识别该字符串为有效日期,因此不会更新输入框内容。


方案一:直接配置Datepicker显示目标格式

Bootstrap Datepicker内置支持通过格式符定义显示样式,完全可以直接在初始化时指定你需要的「星期几 - 月份 日, 年份」格式,无需额外的changeDate事件处理:

修改后的JavaScript代码

$(document).ready(function () {
    $("#date-input").datepicker({
        format: "dddd - MMMM D, YYYY", // 对应目标格式的内置格式符
        autoclose: true,
    });
});

格式符说明:

  • dddd:完整星期名称(如Wednesday)
  • MMMM:完整月份名称(如January)
  • D:不带前导零的日期数字(如1)
  • YYYY:4位年份数字

方案二:分离显示格式与提交格式(适用于需后台提交标准日期的场景)

如果需要给后台提交mm/dd/yyyy格式的日期,同时前端显示带星期的格式,可以用一个隐藏输入框存储真实提交值,另一个输入框负责展示格式化后的内容:

修改后的HTML结构

<div class="col-md-6">
 <div class="form-group">
  <label>Date</label>
  <div class="date input-group">
   <input
    type="text"
    class="form-control"
    id="date-display"
    readonly
   />
   <input
    type="hidden"
    id="date-input"
    name="date"
   />
  </div>
 </div>
</div>

修改后的JavaScript代码

$(document).ready(function () {
    // 初始化Datepicker绑定到隐藏输入框,使用标准提交格式
    $("#date-input").datepicker({
        format: "mm/dd/yyyy",
        autoclose: true,
    }).on("changeDate", function (e) {
        const selectedDate = e.date;
        const displayOptions = { weekday: "long", year: "numeric", month: "long", day: "numeric" };
        const formattedDisplayDate = selectedDate.toLocaleDateString("en-US", displayOptions);
        // 更新前端显示用的输入框
        $("#date-display").val(formattedDisplayDate);
    });
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 15:22:13