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

如何在jQuery UI Datepicker中禁用周一并阻止用户手动输入日期

解决方案

禁用周一选项

jQuery UI Datepicker 中date.getDay()的返回值规则为:0对应周日,1对应周一,2对应周二,依此类推至6对应周六。你只需修改beforeShowDay回调中的判断逻辑,新增周一的禁用规则即可:
修改前的beforeShowDay逻辑:

beforeShowDay: function(date) {
  var day = date.getDay();
  return [(day == 0 ? false : disableSpecificDate(date)), ''];
}

修改后的beforeShowDay逻辑:

beforeShowDay: function(date) {
  var day = date.getDay();
  // 新增day == 1的判断,禁用周一
  return [(day == 0 || day == 1 ? false : disableSpecificDate(date)), ''];
}

阻止用户手动输入日期

无需额外编写JS逻辑,直接给日期输入框添加readonly属性即可,用户将无法编辑输入框内容,只能通过日期选择器弹窗选择有效日期:
修改前的输入框代码:

<input id="date" type="text" name="attributes[DELIVERY DATE]" value="" />

修改后的输入框代码:

<input id="date" type="text" name="attributes[DELIVERY DATE]" value="" readonly />

完整可运行代码

JS 代码

if (window.jQuery) {
  let $ = window.jQuery;

  $(function() {
    // Dates to exclude
    var excludeDays = ['2021-09-04', '2021-09-12'];

    function disableSpecificDate(date) {
      // To disable specific day
      var dateArr = [String(date.getFullYear()), String(date.getMonth() + 1), String(date.getDate())];
      if (dateArr[1].length == 1) dateArr[1] = "0" + dateArr[1];
      if (dateArr[2].length == 1) dateArr[2] = "0" + dateArr[2];
      return excludeDays.indexOf(dateArr.join("-")) == -1;
    }
    $("#date").datepicker({
      dateFormat: 'dd/mm/yy',
      minDate: +1,
      maxDate: '+1M',
      beforeShow: function() {
        // To exclude next business day after 12 PM
        if (new Date().getHours() >= 12) {
          $(this).datepicker("option", "minDate", +2);
        }
      },
      beforeShowDay: function(date) {
        var day = date.getDay();
        // 同时禁用周日和周一
        return [(day == 0 || day == 1 ? false : disableSpecificDate(date)), ''];
      }
    });
  });
}

HTML 代码

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js" defer="defer"></script>

<div style="width:300px; clear:both;">
  <p>
    <!-- 新增readonly属性禁止手动输入 -->
    <input id="date" type="text" name="attributes[DELIVERY DATE]" value="" readonly />
    <span style="display:block" class="instructions"></span>
  </p>
</div>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:57:02