【发布时间】:2014-10-17 09:34:38
【问题描述】:
我正在使用 jQuery UI datepicker 作为用户请求参观学校的表单。巡回演出有一个日期范围,在该范围内,站点管理员可能会禁用某些已预订的日期。目前没问题:
/* array of booked dates generated from CMS backend */
var disabledDates = [
'2015-05-06',
'2015-05-08' // examples
];
$('[name="date_of_visit"]').datepicker({
minDate: '4/30/2015', // Range start
maxDate: '10/1/2015', // Range end
beforeShowDay: function(date) { // Disable custom dates
var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
return [$.inArray(string, disabledDates) == -1];
}
});
我从这篇文章中得到了beforeShowDay 代码:Jquery UI datepicker. Disable array of Dates
我知道我可以使用第二个参数为禁用元素添加一个类,但它会将其添加到所有禁用日期,包括minDate 和maxDate 之外的日期:
beforeShowDay: 以日期为参数的函数,必须 返回一个数组:
0:true/false 表示此日期是否可选
1: 添加到日期单元格的 CSS 类名或默认的“” 演示文稿
2:此日期的可选弹出工具提示在日期选择器中每天调用该函数之前 显示出来。
但是,客户要求只有“已预订”的日期才具有该日期不可用的视觉指示(与默认禁用状态不同)。不会很多,可能有 4 或 5 个。这对我来说很有意义。
是否有某种方法可以仅自定义设置中 beforeShowDay 函数禁用的日期,或其他解决方案来实现我所追求的目标? jsFiddle demo
【问题讨论】:
标签: javascript jquery jquery-ui jquery-ui-datepicker