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

Node.js EJS环境下为日历指定日期添加粗体样式的问题求助

Node.js EJS环境下为日历指定日期添加粗体样式的问题求助

嗨,我来帮你排查这个问题!你遇到的情况主要有两个关键点:一是beforeShowDay的逻辑没针对指定日期做判断,二是不知道怎么在日历渲染完成后执行自定义操作。咱们一步步来解决:

1. 修正beforeShowDay的逻辑,只给10号和15号加样式类

你现在的代码是给所有日期都加上custom-day类,自然看不到预期效果。得先判断当前日期是不是10号或15号,再决定是否添加类:

dateTitle.datepicker({
  beforeShowDay: function(date) {
    // 获取当前日期的“日”部分
    const dayOfMonth = date.getDate();
    // 只给10号和15号添加自定义类
    if (dayOfMonth === 10 || dayOfMonth === 15) {
      return [true, "custom-day"]; // 第一个参数true表示允许选择该日期,第二个是要加的类名
    }
    // 其他日期正常显示,不加类
    return [true, ""];
  }
});

2. 确保CSS样式能覆盖默认日历样式

jQuery UI的日历自带默认样式,你需要给custom-day类加足够优先级的样式才能生效,比如:

.custom-day {
  font-weight: bold !important;
  /* 可选:再加个颜色让效果更明显 */
  color: #dc3545 !important;
}

加!important是为了覆盖UI库的默认样式优先级,保证你的粗体效果能显示出来。

3. 在日历显示后执行自定义函数

如果需要在日历渲染完成后做额外操作(比如手动修改DOM),可以用jQuery UI Datepicker的beforeShow事件——这个事件会在日历即将显示、DOM已经生成的时候触发,刚好适合你的需求:

dateTitle.datepicker({
  beforeShowDay: function(date) {
    const dayOfMonth = date.getDate();
    if (dayOfMonth === 10 || dayOfMonth === 15) {
      return [true, "custom-day"];
    }
    return [true, ""];
  },
  beforeShow: function(input, inst) {
    // 日历DOM已经生成,这里可以执行你的自定义逻辑
    // 比如获取日历容器,查找指定日期的元素
    const calendarContainer = inst.dpDiv;
    const targetDays = calendarContainer.find(".custom-day");
    
    // 举个例子:给这些日期加背景色
    targetDays.css("background-color", "#f8f9fa");
    
    // 如果需要等日历完全渲染完成,可以加个短暂延迟
    setTimeout(() => {
      // 这里能确保日历已经完全显示在页面上
      console.log("日历已完全渲染,可执行后续操作");
    }, 10);
  }
});

另外要注意:确保你的代码是在jQuery和jQuery UI脚本加载完成后执行的,不然会找不到datepicker方法哦!

备注:内容来源于stack exchange,提问作者nezek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 13:49:32