Javascript 在JQuery DatePicker上显示月份以及可用/启用的天数
如何将日历设置为显示下一个可用/启用日期的月份?e、 g如果今天的日期是2017年12月1日,DatePicker将显示12月份。但是,如果12月份没有可用/启用的天数,该怎么办!DatePicker应该显示2018年1月和下一个可用/启用的日期 下面的代码用于禁用一周中的特定日期和一年中的特殊日期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
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。从标记调用时效果良好。但是,不适用于标记的内联显示。有什么想法吗?