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

Bootstrap Datepicker v1.9.0选周WW/YYYY格式关闭后值异常求助

问题原因

问题确实是Bootstrap Datepicker的默认机制导致:你初始化组件时设置了format: 'MM-DD-YYYY',当日期选择器关闭触发hide事件时,组件会自动按指定格式解析输入框内容并重新赋值。你在changeDate事件中手动写入的WW/YYYY格式不符合预设的日期格式规则,因此会被组件覆盖为异常值。

解决方案

方案1:关闭自动解析(修改量最小)

给datepicker添加forceParse: false配置,禁用组件关闭时自动解析重写输入框值的逻辑,同时补全给业务绑定用的隐藏域赋值的逻辑即可。
修改后的完整jQuery代码:

$(document).ready(function () {
    moment.locale('en', {
        week: { dow: 0, doy: 0 }
        // 周日为一周第一天
    });

    $("#weeklyDatePicker").datepicker({
        format: 'MM-DD-YYYY',
        forceParse: false, // 核心配置,禁止组件自动覆盖输入框值
        autoclose: true // 可选,选完日期自动关闭选择器,优化体验
    });

    $('#weeklyDatePicker').on('changeDate', function (e) {
        const selectDate = moment(e.date);
        const week = selectDate.week();
        const year = selectDate.year();
        const weekVal = `${week}/${year}`;
        // 赋值给展示输入框
        $("#weeklyDatePicker").val(weekVal);
        // 赋值给后端绑定用的隐藏域,原代码遗漏了这一步
        $(".weeklyDatePicker[type='hidden']").val(weekVal);
    });
});

额外优化:可以给#weeklyDatePicker输入框添加readonly属性,禁止用户手动输入,避免出现格式异常。

方案2:分离展示与逻辑层(稳定性更高)

如果担心关闭强制解析引发其他兼容问题,可以将日期选择器绑定到一个新增的隐藏输入框,所有日期计算逻辑都在隐藏节点处理,仅将最终格式化后的WW/YYYY值赋值给用户可见的展示输入框,从根本上避免格式冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:39:03