Javascript datepicker排除周末,一系列日期&每周特定的一天

时间:2015-12-16 14:11:44

标签: javascript jquery date datepicker

我正试图从我的日期选择器中排除周末,一系列日期和每周的星期一。这就是我到目前为止所做的:

var disableddates = ["12-21-2015", "12-24-2015", "1-4-2016", "1-5-2016"];
function DisableSpecificDates(date) {

  var m = date.getMonth();
  var d = date.getDate();
  var y = date.getFullYear();

  var currentdate = (m + 1) + '-' + d + '-' + y ;

  for (var i = 0; i < disableddates.length; i++) {

  if ($.inArray(currentdate, disableddates) != -1 ) {
      return [false];
    }
  }

  var weekend = $.datepicker.noWeekends(date);
  return [(weekend[0] || date.getDay() == 1)]; // I'm trying to disable Monday here

}

$(function() {
  $("#date").datepicker( {
    minDate: setMinDate,
    maxDate: "+2M",
    beforeShowDay: DisableSpecificDates
  });
});

特定日期(存储在disableddates数组中)不包括在内,周末也是如此,但周一仍然可以选择 - 是否有人知道我哪里出错了,或者替代解决方案?< / p>

2 个答案:

答案 0 :(得分:2)

所以,如果我理解得对,你想要周二至周五的约会。检查$.datepicker.noWeekends(date);做了什么,如果是工作日则返回1,如果是周末,则返回0。那么让我们检查你的代码:

weekend[0] || date.getDay() == 1

如果weekend[0]为false,则表示date.getDay() == 0== 6(星期日或星期六)。但weekend[0]始终适用date.getDay() == 1。所以你总是允许星期一,true || true == true

你想要的是:

return [(weekend[0] && date.getDay() != 1)];

这意味着,如果它与星期一不同,则允许它

答案 1 :(得分:1)

我找到了:

0: Sunday
1: Monday 
2: Tuesday 
3: Wednesday
4: Thursday
5: Friday 
6: Saturday

所以那部分是正确的。我也发现你没有在date

内传递DisableSpecificDates

我试过(简化):

$("#datepicker").datepicker({
  beforeShowDay: function(date) {
    var day = date.getDay();
    return [(day != 1 && day != 0 && day != 6)];
  }
});
<link href="https://code.jquery.com/ui/1.11.3/themes/smoothness/jquery-ui.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.11.3/jquery-ui.min.js"></script>
<p>Date:
  <input type="text" id="datepicker">
</p>

https://jsfiddle.net/hLa2uuov/2/