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

如何配置jquery-ui datepicker仅允许选择每月最后一个周五

问题原因
  • 语法错误:jQuery UI Datepicker 控制日期可选状态的专属配置项是beforeShowDay,该配置需要接收一个以日期对象为入参的函数。你直接把变量声明、return逻辑裸写在datepicker的初始化配置对象中,完全不符合JavaScript对象语法,代码会直接抛出语法错误无法运行。
  • 逻辑漏洞:你原逻辑里用date.getDate() > 23判断最后一个周五的规则存在漏洞,部分月份的最后一个周五会出现在22号、23号(比如平年2月1日为周五时,当月最后一个周五是22号),这个判断条件会漏掉这些合法日期。
正确判断逻辑

判断每月最后一个周五的可靠规则:

  1. 当天为周五:date.getDay() === 5(Date对象的getDay()方法返回0代表周日,5对应周五)
  2. 给当前日期加7天后,日期月份与当前月份不同——如果7天后就进入下一个月,说明当前周五就是当月最后一个周五,不会有更靠后的周五出现在本月。
整合后的完整初始化代码
$(function() {
  $( "#datepicker" ).datepicker({
    dateFormat: 'dd/mm/yy',
    closeText:"Schließen",
    prevText:"Vorheriger",
    nextText:"Nächster;",
    currentText:"Heute",
    monthNames: ["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],
    monthNamesShort:["Jan","Feb","Mar","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],
    dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],
    dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],
    dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],
    weekHeader:"Sm",
    firstDay:1,
    // 新增可选日期控制逻辑
    beforeShowDay: function(date) {
      const day = date.getDay();
      // 计算7天后的日期
      const nextWeekDate = new Date(date.getTime());
      nextWeekDate.setDate(nextWeekDate.getDate() + 7);
      // 校验是否为当月最后一个周五
      const isLastFridayOfMonth = day === 5 && nextWeekDate.getMonth() !== date.getMonth();
      return [isLastFridayOfMonth, ''];
    }
  });
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 14:42:22