jQuery UI DatePicker Реинициализация minDate не удается - PullRequest
0 голосов
/ 01 октября 2019

У меня есть функция, которая инициализирует DatePicker

function initDatepickerTaskEndDate(){
            //console.log(new Date(studyPhaseTimeframe.endDate));
        $(".closeTaskDatePicker").datepicker({
            showOn: "both",
            showOtherMonths: true,
            selectOtherMonths: true,
            changeMonth: true,
            changeYear: true,
            dateFormat: "yy-mm-dd",
            showWeek: true,
            firstDay: 1,
            showButtonPanel: true,
            minDate: setMinDateForTaskCloseDatePicker(),
            maxDate: studyPhaseTimeframe.endDate,
            onClose: function (){// setting end date and link to call the save function
                        var closeDate = $(".closeTaskDatePicker").datepicker("getDate");
                        if(closeDate!=null){
                            $(".acceptCloseDate").prop("disabled",false);
                        }
                    },
        }).focus(function(){
            $(".ui-datepicker-calendar").css({"position":"relative"});  
            $(this).attr("autocomplete","off");
            $(".acceptCloseDate").prop("disabled",true);
        });
    }

И функция для установки minDate, где я также использую getDate из другого DatePicker.

    function setMinDateForTaskCloseDatePicker(){
        var minDate=null;
        console.log("start init close")
        //set min Date to Task Close date to the biggest milestone completed date or to the biggest task schedule completion date.
        //console.log($(".datepickerTaskStart").datepicker("getDate"));
        console.log("set min on EndDate");
        minDate=$(".datepickerTaskStart").datepicker("getDate");    
        console.log(minDate);           
        if(taskSchedulesListLength>0){
            $.each(taskSchedulesList,function(index,item){
                if(item.plannedDate!=null){
                    var newDate=new Date(item.plannedDate);
                    if(minDate==null && item.completedQty>0){
                        minDate=newDate;
                    }else if(minDate<newDate && item.completedQty>0){
                        console.log("came in");
                        minDate=newDate;
                    }
                }
            });
        }else{
            $.each(milestoneRoleBudgetList,function(index,item){
                if(item.completionDate!=null){
                    var newDate=new Date(item.completionDate);
                    if(minDate==null){
                        minDate=newDate;
                    }else if(minDate<newDate){
                        minDate=newDate;
                    }
                }
            });
        }

        console.log("Min Return:");
        console.log(minDate);
        return minDate;
    }

Также, когда изменяется второй DatePickerя повторно инициализирую эти средства выбора даты.

    $(document).on('change','.datepickerTaskStart',function(){
        initDatepickerTaskEndDate();
        console.log("mminn end");
        console.log($(".closeTaskDatePicker").datepicker( "option", "minDate" ));
        console.log("mmaxx end");
        console.log($(".closeTaskDatePicker").datepicker( "option", "maxDate" ));
    });

Результат журнала консоли:

  • При старте у нас (где у второго средства выбора даты есть дата 2019-06-03):

41: 1500 начальное закрытие инициализации

41: 1503 установленное минимальное время на конечной дате

41: 1505 понедельник, июнь 03 2019 00:00:00 по Гринвичу+0200 (Центральноевропейское летнее время)

41: 1535 мин. Возвращение:

41: 1536 Пн Июн 03 2019 00:00:00 GMT + 0200 (Центральноевропейское летнее время)

  • После изменения второго средства выбора даты начинается инициализация, и у меня появляются все остальные результаты

41: 1500 start init close

41: 1503установить минимальную дату окончания

41: 1505 пт 07 декабря 2018 00:00:00 GMT + 0100 (центральноевропейское стандартное время)

41: 1535 мин. :

41: 1536 пт 07 декабря 2018 00:00:00 по Гринвичу + 0100 (центральноевропейское стандартное время)

41: 2778 мин. Конец

41: 2779 пн. Июнь03 2019 00:00:00 GMT + 0200 (центральноевропейское летнее время)

41: 2780 mmaxx end

41: 2781 2018-12-27

Я ожидаю, что minDate будет 2018-12-27, но он останется таким, каким он был в начале. Чего мне не хватает, так это того, что console.log при инициализации, похоже, правильно вычисляет дату и возвращает дату.

1 Ответ

0 голосов
/ 07 октября 2019

Вызов только функции для установки минимальных и максимальных дат без полной инициализации решает проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...