JS 日期选择器:禁用过去的日期 + 一周中的特定日期 + 特定日期



我在JS中有一个日期选择器,我禁用了传递的日期,只允许这样的星期六:

$(document).ready(function(){
    $("#aankomstdatum").datepicker({
        dateFormat: "dd-mm-yy",
        numberOfMonths:2,
        minDate: 0,
        beforeShowDay: function(date){
        var day = date.getDay();
        return [day == 6];
    }});
});

我还有一个代码,可以让我禁用这样的特定日期:

 /** Days to be disabled as an array */
var disableddates = ["26-05-2018"];
function DisableSpecificDates(date) {
 var m = date.getMonth();
 var d = date.getDate();
 var y = date.getFullYear();
 // First convert the date in to the mm-dd-yyyy format 
 // Take note that we will increment the month count by 1 
 var currentdate = (m + 1) + '-' + d + '-' + y ;
  // We will now check if the date belongs to disableddates array 
 for (var i = 0; i < disableddates.length; i++) {
 // Now check if the current date is in disabled dates array. 
 if ($.inArray(currentdate, disableddates) != -1 ) {
 return [false];
 }
 }
}

通过添加这个,它可以工作:

beforeShowDay: DisableSpecificDates

遇到的问题是我不能同时工作。我不确定如何禁用过去的日期和除星期六以外的所有日期,并禁用数组中的特定给定日期,同时它们确实有效。例如,尝试时我总是遇到语法错误:

    beforeShowDay: DisableSpecificDates, function(date){
    var day = date.getDay();
    return [day == 6];
}});

这可能做到吗?

是的,这是可以实现的。您希望创建一个函数并从中返回[false],如果:

  1. date是星期六或
  2. date包含在disableddates数组中

下面是示例:

var disableddates = ["26-04-2018"];
function DisableDates(date) {
  var selectable = !isSaturday(date) && !isDateDisabled(date);
  return [selectable];
}
function isSaturday(date) {
  var day = date.getDay();
  return day === 6;
}
function isDateDisabled(date) {
  var m = date.getMonth() + 1;
  var d = date.getDate();
  var y = date.getFullYear();
  // First convert the date in to the dd-mm-yyyy format
  if(d < 10) d = '0' + d;
  if(m < 10) m = '0' + m;
  var currentdate = d + '-' + m + '-' + y;
  // Check if disableddates array contains the currentdate
  return disableddates.indexOf(currentdate) >= 0;
}

然后只需传递DisableDates函数作为beforeShowDay选项的值:

$("#aankomstdatum").datepicker({
  dateFormat: "dd-mm-yy",
  numberOfMonths:2,
  minDate: 0,
  beforeShowDay: DisableDates
});

最新更新