【问题标题】:bootstrap datepicker beforeShowDay not working when called inside $.when().done()在 $.when().done() 内部调用时,bootstrap datepicker beforeShowDay 不起作用
【发布时间】:2020-09-03 15:33:05
【问题描述】:

您好,在调用 ajax 以获取要在 Datapicker 中显示的日历日期后,我调用了一个函数来使用日期参数数组初始化 datapicker...问题是 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;

【问题讨论】:

    标签: javascript jquery ajax bootstrap-4 datepicker


    【解决方案1】:

    您好可能迟到了,但您必须在您的函数 inizializeCalander 中执行此操作:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-17
      • 1970-01-01
      • 1970-01-01
      • 2020-01-09
      • 1970-01-01
      • 1970-01-01
      • 2016-04-20
      • 2014-04-02
      相关资源
      最近更新 更多