我正在尝试禁用 jQuery UI 日期选择器中的所有星期日和一些特定日期。这些条件加在一起在我的代码中不起作用。只有周日才会被禁用。这是代码
var array = [, '2024-01-07', '2024-01-08', '2024-01-09', '2024-01-10']
$("#datepicker").datepicker({
beforeShowDay: function(date) {
var day = date.getDay();
var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
return [(day != 0), array.indexOf(string) == -1]
}
});
我希望在日期选择器中禁用所有星期日和某些日期。
您可以更新此行吗
return [(day!=0), array.indexOf(string) == -1 ]
有了这个
return [!((date.getDay() === 0) || array.includes(string)), true];
参见演示
使用 jquery 禁用日期选择器中的所有星期日和某些特定日期
$(function() {
var holidays = ['2024-1-7','2024-1-8','2024-1-9','2024-1-10'];
function DisableDate(date) {
var day = date.getDay();
if (day != 0) {
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear();
for (i = 0; i < holidays.length; i++) {
if($.inArray((y) + '-' + (m+1) + '-' + d, holidays) != -1) {
return [false];
}
}
return [true];
} else {
return [day != 0, ''];
}
}
$('#datepicker').datepicker({
onClose: function(dateText, inst) {
$(this).attr("disabled", false);
},
beforeShow: function(input, inst) {
$(this).attr("disabled", true);
},
beforeShowDay: DisableDate,
minDate: 0,
dateFormat: 'yy-mm-dd',
});
});
要禁用 jQuery 日期选择器中的所有星期日和特定日期,您可以按如下方式修改代码:
var array = ['2024-01-07', '2024-01-08', '2024-01-09', '2024-01-10'];
$("#datepicker").datepicker({
beforeShowDay: function (date) {
var day = date.getDay();
var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
return [(day !== 0 && array.indexOf(string) === -1)];
}
});
此处的关键更改是确保您在想要启用的日期返回 true。在本例中,返回的条件检查当天是否不是星期日(day !== 0)以及日期是否不在指定的数组中。
这样,星期日和数组中的特定日期都将在日期选择器中被禁用。日期选择器仅允许选择不在指定数组中的非星期日。
必须是:
// date is not a sunday and
// date is not present in the array
return [day !== 0 && array.indexOf(string) === -1];
请注意,您只需要设置返回数组的第 0 项(docs)。