Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 禁用特定日期、特定日期和特定月份、日期选择器_Jquery_Datepicker - Fatal编程技术网

Jquery 禁用特定日期、特定日期和特定月份、日期选择器

Jquery 禁用特定日期、特定日期和特定月份、日期选择器,jquery,datepicker,Jquery,Datepicker,我正在尝试禁用日期选择器的某些日期。到目前为止,我已经能够禁用星期天和星期一,以及一月和二月的月份。现在我一直在尝试禁用特定日期 2014/11/27、2014/12/242014/12/24 我尝试过的一切都没有奏效。我对这一切都很陌生,不知道自己做错了什么 这是到目前为止我的代码 jQuery(document).ready(function($) { $.datepicker.setDefaults({ dateFormat : 'yy/mm/dd', befo

我正在尝试禁用日期选择器的某些日期。到目前为止,我已经能够禁用星期天和星期一,以及一月和二月的月份。现在我一直在尝试禁用特定日期

2014/11/27、2014/12/242014/12/24

我尝试过的一切都没有奏效。我对这一切都很陌生,不知道自己做错了什么

这是到目前为止我的代码

    jQuery(document).ready(function($) {
    $.datepicker.setDefaults({
   dateFormat : 'yy/mm/dd',
   beforeShowDay: disableSpecificWeekDays, 
   changeMonth: true,
   changeYear: true,
   firstDay: 0  
    });

var daysToDisable = [0, 1];
var monthsToDisable = [0, 1];

function disableSpecificWeekDays(date) {
    var day = date.getDay();
    if ($.inArray(day, daysToDisable) != -1) {
        return [false];
    }

    var month = date.getMonth();
    if ($.inArray(month, monthsToDisable) != -1) {
        return [false];

    }

    return [true];
}       


});
我想知道您是否可以在某个日期范围内禁用周一和周日,比如2014年9月1日至2014年5月31日

在此方面的任何帮助都将不胜感激

更新日期:2014年9月26日

多亏了TimSPQR,如果你能解决这个问题的话。这是我的代码,供任何对此感兴趣的人使用

  jQuery(document).ready(function($) {
    $.datepicker.setDefaults({
   dateFormat : 'yy/mm/dd',
   beforeShowDay: unavailable, 
   changeMonth: true,
   changeYear: true,
   firstDay: 0  
    });

var months = ["January",    "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]  
var days = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"];
var unavailableDates = ["2014/11/27","2014/12/25","2014/12/24"]; // yyyy/MM/dd
var unavailableDays = ["Monday","Sunday"];
var unavailableMonths = ["January", "February"]
var lowrange = new Date('5/25/2015');
var highrange = new Date('9/7/2015');
var lowrange2 = new Date('5/25/2016');
var highrange2 = new Date('9/7/2016');



    function unavailable(date) {
        ymd = date.getFullYear() + "/" + ("0"+(date.getMonth()+1)).slice(-2) + "/" + ("0"+date.getDate()).slice(-2);
        day = new Date(ymd).getDay();
        month = new Date(ymd).getMonth();
        if (
        ((lowrange < date && date < highrange) && date.getDay() === 0) ||
        ((lowrange < date && date < highrange) && date.getDay() == 1) ||
        ((lowrange2 < date && date < highrange2) && date.getDay() === 0) ||
        ((lowrange2 < date && date < highrange2) && date.getDay() == 1) ||
        ($.inArray(ymd, unavailableDates) < 0 && $.inArray(days[day], unavailableDays) < 0 && $.inArray(months[month], unavailableMonths) < 0) 
        )
        {
            return [true, "enabled", "Book Now"];
        } else {
            return [false,"disabled","Closed"];
        }
    }



    });

这里是一个解决方案,为您的具体日期和星期日星期一

只需在数组中输入排除日期

JS

我会考虑一下,看看是否有可能按照您的要求进行多重排除。 编辑:这是一个不需要for循环就可以做你想做的事情的函数


编辑:源自。

非常感谢!这应该对我有用。我想我应该能够添加到这一点,以禁用1月和2月。没有问题。自从我发帖以来,我一直在玩弄它,它看起来相当灵活。如果我能想出更优雅的东西,我会把它贴出来。
var enabledDays = ['9/24/2014','9/26/2014','9/29/2014','10/25/2014'];

$(".mydate").datepicker({
    beforeShowDay: disabledAll,
    beforeShow: function (textbox, instance) {
                                              instance.dpDiv.css({
                                                          marginTop: 2,
                                                          marginLeft: 1
                                                                  });
                                              }
                         });

function disabledAll(date)
{
 var m = date.getMonth() + 1, d = date.getDate(), y = date.getFullYear();
 for ( var i=0; i < enabledDays.length; i++ )
     {
      if( $.inArray( m + '/' + d + '/' + y, enabledDays) != -1 )
        {
         return [0];
         }
      }
 return [1];
}