bootstrap 在 $.when().done() 中调用时,datepicker beforeShowDay 不工作

bootstrap datepicker beforeShowDay not working when called inside $.when().done()

你好,在 ajax 调用以获取要在数据选择器中显示的日历日期之后,我调用了一个函数来使用日期参数数组初始化数据选择器...问题是 beforeShowDay 不工作。请注意,在 $.when().done() 之外调用时它工作正常,但默认情况下已经分配了日期,而不是来自 db;

这里是初始化数据选择器的函数:

function inizializeCalander(array){
    var format ="dd/mm/yyyy";
    var datesd = ['11/05/2020', '05/21/2020'];
    var date = new Date();
    var avaibleDates =array;
    var id_Dates = new Array();

    date.setDate(date.getDate());
    $('.pickerdate').datepicker({
        language: "it",
        beforeShowDay: function(date) {
            month = '' + (date.getMonth() + 1),
            day = '' + date.getDate(),
            year = date.getFullYear();

            if (month.length < 2) {
                month = '0' + month;
            }

            if (day.length < 2) {
                day = '0' + day;
            }       

            var dmy = day +"-"+month+"-"+year;
            if (avaibleDates.includes(dmy)) {

                return {classes: 'highlight', tooltip: 'Title'};
            }else{
                return {classes: 'disabled', tooltip: 'Title'};
            }

         },
        startDate: date,
        autoclose:true,
        format: format,
        //daysOfWeekDisabled: "0,1,2,3",
        datesDisabled:datesd,
        inline: true,
        todayHighlight: true,

    });
}

这是调用 inizializeClander 的时间:

$.when(getClanderDates()).done(function(ajax1Results){
   var array = new Array();
   array=ajax1Results;
   console.log(array);
   inizializeCalander(array);
});

//inizializeCalander(array);//if called outside it workd fine  but with already assigned dates by default not from db;

你好,我可能来晚了,但你必须在你的函数 inizializeCalander 中这样做:

date.setDate(date.getDate()); 
$('.pickerdate').datepicker('destroy');
$('.pickerdate').datepicker({ ......... code

为什么?因为在调用 inizializeCalander() 之前 datapicker 已经初始化;因为 ajax 调用需要时间,所以首先你必须销毁它然后重新初始化它。希望有用 ;)