我有一个日历,我需要禁用特定日期。
我使用spiceforms.com/blog/how-to-disable-dates-in-jquery-datepicker-a-short-guide/上的代码作为编写我的示例,它工作正常,但在某些时候停止了工作,我找不到原因, 我的代码是:
function Disableentries(date) {
// here I get an array of dates in yyyy-mm-dd format
var datesarray = datesfromcalendar();
var arraynoentry = datesarray[0];
var m = date.getMonth();
var d = date.getDate();
var y = date.getFullYear();
var currentdate = y + '-' + (m + 1) + '-' + d ;
// We will now check if the date belongs to disabled dates array
for (var i = 0; i < arraynoentry.length; i++) {
// Now check if the current date is in disabled dates array.
if (jQuery.inArray(currentdate, arraynoentry) != -1 ) {
return [0];
}else{
return [1];
}
}
}
jQuery(function() {
jQuery( "#edit-available-from-datepicker-popup-0-bloque" ).datepicker({
minDate: 0,
beforeShowDay: Disableentries,
dateFormat: 'dd-mm-yy',
});
});
由于这段代码,我禁用了一些日期,但它们不是数组中的日期。我从2016-10-29到2016-12-31禁用整个日历,然后在我的禁用日期是以下图片中显示时没有任何内容: calendar 1 calendar 2
¿代码或其他方法有什么问题可以解决这个问题吗?
编辑:datefromcalendar()函数获取需要的日期 从图片中出现的日历中删除。这是 代码:
function datesfromcalendar(){
var arraynoentry= ['2000-01-15'];
var arraynoexit= ['2000-01-16'];
jQuery('.cal-month').each(function(){
var month = jQuery(this).data("cal-month");
var year = jQuery(this).data("cal-year");
//alert(month);
var noentry = jQuery(this).find('.cal-na-pm');
var noexit = jQuery(this).find('.cal-na-am');
jQuery.each(noentry,function(){
var day = jQuery(this).text();
arraynoentry.push(year + "-" + month + "-" + dia);
//block entries
//alert('hello');
})
jQuery.each(nosalida,function(){
var day = jQuery(this).text();
arraynoexit.push(year + "-" + month + "-" + dia);
//block exits
//alert('bye');
})
})
var results = [arraynoentry,arraynoexit];
return results;
}
答案 0 :(得分:0)
我发现了问题。
当我们将1加到月份(将月份从0转换为11到月份从1到12)时,结果为整数(1,2,3 ... 10,11,12)。数组上的日期的月份为01,02,03,(...)格式,因此当我们进行比较时,只有2位数的月份会返回正确的结果。
要解决这个问题,我们必须更改月份格式以匹配数组中的月份格式,以便我们对它们进行比较。 这段代码可以解决问题:
var currentdate = y + '-' + ('0'+(m + 1)).slice(-2) + '-' + d ;