kzpromo
@kzpromo
Yii2 Framework Developer

Как изменить событие beforeShowDay в плагине datepicker?

Добрый день, возникла трудность с событиями datepicker
При событии изменения месяца onChangeMonthYear, я загружаю массив дат, чтобы отметить на календаре занятые дни, но массив не успевает загрузиться, событие beforeShowDay происходит быстрее, как сделать так, чтобы при изменения месяца, сначала грузились даты, только потом происходило beforeShowDay событие

var array = new Array();
   
    function load_reservation(stock, year = null, month = null, callback){
        $.post( "'.Url::to(['site/ajax-load-reservation']).'", { "stock": stock, "year": year, "month": month }, function( data ) {   
            if(data.result==1){
                    callback(data.array);                
                }
                else callback(null);
        }, "json");
    }

    $(".book").each(function(){
        var id = $(this).attr("data-stock_id");
        load_reservation(id, null, null, function(result){
            array[id] = result;
            console.log("Loaded dates for #"+ id +": "+array[id]);
        });  
    });

    $(".book").datepicker({
        
        changeMonth: true,
        changeYear: true,
        minDate: 0,
        language: "ru",
        dateFormat: "yy-mm-dd",
        onSelect: function (date) {
            var id = $(this).attr("data-stock_id");
            console.log("selected: "+id);
        },
        onChangeMonthYear: function (year, month, day) {
            var id = $(this).attr("data-stock_id");
            
            load_reservation(id, year, month, function(result){
                array[id] = result;
                console.log("Month changed ("+ month +"), dates for #"+ id +": "+array[id]);
            });
        }, 
        beforeShowDay: function(date){
            var id = $(this).attr("data-stock_id");
            var string = jQuery.datepicker.formatDate("yy-mm-dd", date);
            var res = [ array[id].indexOf(string) == -1 ];
            console.log("Res: "+res);
            return res;
        }
        
    });


Подскажите, где тут ошибка?
  • Вопрос задан
  • 894 просмотра
Решения вопроса 1
kzpromo
@kzpromo Автор вопроса
Yii2 Framework Developer
я нашел решение
function load_reservation(stock, year = null, month = null, callback){
        jQuery.ajax({
            method: "POST",
            url: "'.Url::to(['site/ajax-load-reservation']).'",
            data: { "stock": stock, "year": year, "month": month },
            success: function(data) {
                if(data.result==1){
                    callback(data.array);                
                }
                else callback(null);
            },
            dataType: "json",
            async: false
        });

        
    }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы