Динамическое изменение указателя даты в jQuery UD

Мне нужно изменить minDate DatePicker jQuery каждый значение времени #position или же #type изменения. В настоящее время значение для minDate меняется только в первый раз #position или же #type вызывает .change() метод.

В настоящее время я использую код ниже:

$("#position, #type").change(function(){
     var pos = $("#position").val();
     var type = $("#type").val();
     var url =  "getdate/"+type+"/"+pos;
     $.get(url, function(msg){
         $('.date1').datepicker({
             MinDate: msg
         });
     });
})

1 ответ

Решение

Это потому, что вы заново инициируете .datepicker метод каждый раз, когда есть .change() событие.

Вместо этого инициируйте datepicker однажды в классе .date1 а затем изменить MinDate следующее:

$('.date1').datepicker('option', 'minDate', msg);

Так что это даст:

// first initialise
$('.date1').datepicker({
     MinDate: msg
});

$("#position, #type").change(function(){
     var pos = $("#position").val();
     var type = $("#type").val();
     var url =  "getdate/"+type+"/"+pos;
     $.get(url, function(msg){
        // then change
        $('.date1').datepicker('option', 'minDate', msg);
     });
})

Кроме того, вы также можете уничтожить .datepicker объект следующим образом:

$('.date1').datepicker('destroy');

А затем воссоздать объект, как в вашем собственном коде. Таким образом, в сочетании это даст:

// first initialise
$('.date1').datepicker({
     MinDate: msg
});

$("#position, #type").change(function(){
     var pos = $("#position").val();
     var type = $("#type").val();
     var url =  "getdate/"+type+"/"+pos;
     $.get(url, function(msg){
        // first destroy
        $('.date1').datepicker('destroy');
        // then recreate
        $('.date1').datepicker({
           MinDate: msg
        });
     });
})

Также, пожалуйста, обратитесь к этому вопросу и ответьте:

jQuery DatePicker - изменение minDate и maxDate на лету

Другие вопросы по тегам