SetDate на jquery Datepicker onClose не меняет значение - PullRequest
0 голосов
/ 25 октября 2019

У меня есть таблица, и в каждой строке есть указатель даты. DatePickers только выбирают месяцы, и при закрытии я устанавливаю первый день месяца, за исключением случаев, когда этот день раньше minDate, поэтому я хочу установить minDate там.

Функция SetDate не работает. Мой журнал показывает, что ProperDate установлен правильно, но когда я передаю его в setDate, результат не меняется, и каким-то образом это стека в первый день месяца. Чего мне не хватает?

    function initDatepickerSchedule(){  

        $(".datepickerSchedule").each(function(){

            $(this).datepicker({
                showOn: "both",
                changeMonth: true,
                changeYear: true,
                dateFormat: "yy-mm-dd",
                minDate: scheduleTaskMinDate(),
                maxDate: scheduleTaskMaxDate($(this).closest("tr").find(".ScheduledTaskQtyInput").val(),$(this).closest("tr").find(".ScheduledTaskCompletedQtyInput").val()),
                showButtonPanel: true,  
                onClose: function(dateText, inst) { 
                    function isDonePressed(){
                       return $('#ui-datepicker-div').html().indexOf('ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all ui-state-hover') > -1;
                    }

                    if (isDonePressed()){
                        var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
                        var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
                        var properDate=new Date(year, month, 1);
                        var minDate=$(this).datepicker("option","minDate");                  
                        console.log(properDate);// 2019-12-1
                        console.log(minDate);//2019-12-2
                        console.log(properDate<minDate);// true
                        if(properDate<minDate){
                            properDate=minDate;
                        }
                        console.log("before set");
                        console.log(properDate===minDate);//true
                        console.log(properDate);//2019-12-2

                        $(this).datepicker("setDate",properDate);
                        console.log($(this).datepicker("getDate"));//2019-12-1
                        var coNo=$(this).closest("tr").find(".changeOrderNoInput").val();
                        $(this).closest("tr").find(".ScheduledTaskVersion").val(studyTaskScheduleVersion($(this).datepicker("getDate"),coNo));
                        $("#SubmitScheduleDistButton").prop('disabled', true).prop('title',"Validate without Errors to Unlock");
                    }
                }               
            }).focus(function(){
                $(".ui-datepicker-calendar").hide();
                $(this).attr("autocomplete","off");
            });
        });
    }

1 Ответ

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

Похоже, что макс Дата действительно была актуальнаВ этом конкретном случае у меня должна быть дата в том же месяце для maxDate, но по какой-то причине (я не помню и проверил возможное влияние в других частях программы, но не могу найти никаких проблем), я возвращал первую датумесяца.

Так что это не было показано в календаре дел DatePicker был скрыт, поэтому я не мог знать. И это было способом переопределения установленной причины функции maxDate.

...