JQuery UI Datepicker禁用选择月份

时间:2016-12-27 14:15:03

标签: jquery jquery-ui datepicker

我将一个datepicker分配给多个字段,并在myShowDay属性中禁用了特定日期数组。

.datepicker({ beforeShowDay: disablePaymentDates, minDate: 0, maxDate: afterSixMonths });

我正在尝试停用用户在所有日期选择器中选择的日期。反正有吗?

3 个答案:

答案 0 :(得分:1)

datepicker API

所示

beforeShowDay

类型:功能(日期日期)

默认值:null

一个以日期作为参数的函数,必须返回一个数组:

[0] :true / false表示此日期是否可选 [1] :要添加到日期的单元格的CSS类名称或""对于默认演示文稿 [2] :此日期的可选弹出工具提示

在显示日期选择器之前,每天都会调用该函数。

.datepicker({
    minDate: 0, 
    maxDate: afterSixMonths,
    beforeShowDay: function(date) {
        var dd = date.getDate();
        if ($.inArray( dd, disablePaymentDates)!= -1) {
            return [false, "", "disabled" ];
        } else {
            return [true, "", "enabled" ];
        }
    }
});

答案 1 :(得分:0)

我找到了类似于Roetnig的解决方案。我将以下代码添加到beforeShowDay属性调用的函数中。

var monthsToDisable= [];
if ($.inArray(date.getMonth(date), monthsToDisable) > -1) {
    $return = false;
    $returnclass = "unavailable";
} 

然后我填写了'monthToDisable'适当的月份(0-11)。由于此数组将根据用户操作进行更新,因此我只需在更新数组后重新应用datepicker。

答案 2 :(得分:0)

或者您可以使用moment.js

禁用日期范围
var disableRangeStartDate = '2017-10-29';
var disableRangeEndDate = '2018-04-18';

.datepicker({
isInvalidDate: function(arg){
      var thisMonth = arg._d.getMonth()+1;
      if (thisMonth<10){thisMonth = "0"+thisMonth;}
      var thisDate = arg._d.getDate();
      if (thisDate<10){thisDate = "0"+thisDate;}
      var thisYear = arg._d.getYear()+1900;
      var thisCompare = thisYear +"-"+ thisMonth +"-"+ thisDate;

     return moment(thisCompare).isBetween(disableRangeStartDate, disableRangeEndDate);
      }
});