如何在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
相关产品推荐
相关产品推荐

