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

如何在jQueryUI datepicker中同时禁用周末及数组内指定日期

解决方案

你原来的写法本身存在语法错误,JS对象的单个属性只能对应一个值,不能直接给beforeShowDay赋两个函数值。

你不需要额外实现多函数传入的逻辑,只要将两个规则的判断逻辑合并到同一个函数中即可。$.datepicker.noWeekends本身也是返回符合beforeShowDay要求格式的函数,你可以在自定义函数中先调用它做周末判断,再执行你自己的指定日期禁用逻辑,只要任意一个规则命中就返回禁用即可。

完整示例代码

$(function() {
  var unavailableDates = ["27-12-2021", "28-12-2021", "29-12-2021", "30-12-2021", "31-12-2021", "01-01-2022", "02-01-2022", "03-01-2022", "04-01-2022"];

  function combinedDisableRule(date) {
    // 优先判断是否为周末
    var weekendCheckResult = $.datepicker.noWeekends(date);
    if (!weekendCheckResult[0]) {
      return weekendCheckResult;
    }
    // 非周末再判断是否属于禁用日期
    var dmy = date.getDate() + "-" + (date.getMonth() + 1) + "-" + date.getFullYear();
    if ($.inArray(dmy, unavailableDates) === -1) {
      return [true, ""];
    }
    return [false, "", "Unavailable"];
  }

  $("#datepicker").datepicker({
    dateFormat: "dd-mm-yy",
    changeMonth: false,
    changeYear: false,
    minDate: '10D',
    beforeShowDay: combinedDisableRule
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.13.0/jquery-ui.min.js"></script>
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" />
<input type="text" id="datepicker" />

内容的提问来源于stack exchange,提问作者jeremy.o

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:54:04