Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.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
Javascript 在JQuery DatePicker上显示月份以及可用/启用的天数_Javascript_Jquery_Datepicker - Fatal编程技术网

Javascript 在JQuery DatePicker上显示月份以及可用/启用的天数

Javascript 在JQuery DatePicker上显示月份以及可用/启用的天数,javascript,jquery,datepicker,Javascript,Jquery,Datepicker,如何将日历设置为显示下一个可用/启用日期的月份?e、 g如果今天的日期是2017年12月1日,DatePicker将显示12月份。但是,如果12月份没有可用/启用的天数,该怎么办!DatePicker应该显示2018年1月和下一个可用/启用的日期 下面的代码用于禁用一周中的特定日期和一年中的特殊日期 const pad = x => x < 10 ? '0' + x : x const jQuery = { datepicker: { formatDate: (for

如何将日历设置为显示下一个可用/启用日期的月份?e、 g如果今天的日期是2017年12月1日,DatePicker将显示12月份。但是,如果12月份没有可用/启用的天数,该怎么办!DatePicker应该显示2018年1月和下一个可用/启用的日期

下面的代码用于禁用一周中的特定日期和一年中的特殊日期

    const pad = x => x < 10 ? '0' + x : x
    const jQuery = { datepicker: { formatDate: (format, date) => `${pad(date.getMonth() + 1)}-${pad(date.getDate())}` }}

    function disableDays(date) {
        var day = date.getDate();
        var datestamp = jQuery.datepicker.formatDate('mm-dd', date)
        var specialDays = ["12-25", "01-01"]

        return (
             day !== 0
          && day !== 2
          && day !== 4
          && day !== 5
          && !specialDays.includes(datestamp)
        )
    }


$("#myid").datepicker({
    beforeShowDay: disableDays,
    minDate: 0, 
    dateFormat: 'dd-MM-yy',
    inline: true,
    showOtherMonths: true,
    dayNamesMin: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
})
constpad=x=>x<10?“0'+x:x
常量jQuery={datepicker:{formatDate:(format,date)=>`${pad(date.getMonth()+1)}-${pad(date.getDate())}`}
功能禁用天数(日期){
var day=date.getDate();
var datestamp=jQuery.datepicker.formatDate('mm-dd',日期)
变量specialDays=[“12-25”,“01-01”]
返回(
天!==0
&&天!==2
&&天!==4
&&天!==5
&&!specialDays.包括(邮戳)
)
}
$(“#myid”).datepicker({
展示日前:禁用日,
minDate:0,
日期格式:“dd-MM-yy”,
是的,
showOtherMonths:是的,
dayNamesMin:[“太阳”、“星期一”、“星期二”、“星期三”、“星期四”、“星期五”、“星期六”],
})

首先,
beforeShowDay
必须返回数组,而不仅仅是简单的布尔值。忽略这一点,日历中的所有日期都将处于禁用状态

现在,对于原始问题要显示下一个启用日期的月份,您可以使用
beforeShow
选项,该选项接受一个函数,该函数返回一个对象,该对象带有
日期选择器
的选项,以便动态初始化

在此函数中,您可以将
defaultDate
选项设置为下一个启用日期的对象返回

下面是一个演示:

$(函数(){
常数pad=x=>x<10?'0'+x:x
//jQuery.fn.datepicker.formatDate=(格式,日期)=>{return`${pad(date.getMonth()+1)}-${pad(date.getDate())}};
//要通过禁用来测试的标志
var enableDecember=true;
功能禁用天数(日期){
var day=date.getDate();
var month=date.getMonth();
var datestamp=jQuery.datepicker.formatDate('mm-dd',日期);
var specialDays=[“12-25”,“01-01”];
返回[(
//测试
(启用12月| |月!==11)&&
天!==0&&
天!==2&&
天!==4&&
天!==5&&
!specialDays.包括(邮戳)
)];
}
显示前功能(文本、日期){
var today=新日期();
var计数=0;
//循环日期以到达下一个启用日期
while(true){
如果(禁用天数(今天)[0]==真){
打破
}
计数++;
//循环迭代中的下一个日期
today.setDate(today.getDate()+1);
}
//设置defaultDate,计数为从今天开始的天数,
//那么第二次计数将是2天之后
返回{
默认日期:计数
};
}
$(“#myid”).datepicker({
//添加beforeShow处理程序
演出前:演出前,
展示日前:禁用日,
minDate:0,
日期格式:“dd-MM-yy”,
是的,
showOtherMonths:是的,
dayNamesMin:[“太阳”、“星期一”、“星期二”、“星期三”、“星期四”、“星期五”、“星期六”],
});
//通过切换12月份进行测试
$('#toggle')。打开('click',function(){
enableDecember=!enableDecember;
var text=enableDecember?“禁用十二月”:“启用十二月”;
$(this.val)(文本);
$(“#myid”).datepicker('refresh');
});
});

干得好@n4m31ess\U c0d3r。从标记调用时效果良好。但是,不适用于标记的内联显示。有什么想法吗?