2014-03-08 5 views
0

Я пытаюсь создать календарь бронирования с помощью jQuery UI datepicker.Сохранить даты в min и max range jQuery ui datepicker

Я хочу, чтобы сохранить все даты между диапазоном min и max. Значение, когда пользователь выбирает минимальную дату «04/16/2014» и максимальную дату «04/19/2014», я хочу каждый день сохранять в этом диапазоне массив.

Сохранение минимальной и максимальной даты, вероятно, будет недостаточным, так как для всех разных заказов будет указано несколько минут и максимальных дат.

Этот массив, в свою очередь, будет использоваться для добавления класса к тем датам, как показано в приведенном ниже коде.

var bookedArray = <?php echo json_encode($bookedDates); ?>; 

    // function putting dates into the calendar 
    function bookedDates(mydate){ 
     var pickable=true; 
     var displayClass ="available"; 
     var checkdate = $.datepicker.formatDate('mm/dd/yy', mydate); 
     for(var i = 0; i < bookedArray.length; i++) 
      {  
       if(bookedArray[i] == checkdate) 
        { 
       pickable = true; 
       displayClass= "booked-date"; 
       } 
      } 
     return [pickable,displayClass]; 
    } 

    // jQuery UI calendar picker 
    $("#from").datepicker({ 
     beforeShowDay: bookedDates, 
     defaultDate: "+1w", 
     changeMonth: true, 
     changeYear: true, 
     numberOfMonths: 2, 
     onClose: function(selectedDate) { 
      $("#to").datepicker("option", "minDate", selectedDate); 
     } 
    }); 
    $("#to").datepicker({ 
     beforeShowDay: bookedDates, 
     defaultDate: "+1w", 
     changeMonth: true, 
     changeYear: true, 
     numberOfMonths: 2, 
     onClose: function(selectedDate) { 
      $("#from").datepicker("option", "maxDate", selectedDate); 
     } 
    }); 

ответ

0

Вы можете пройти дату и добавить их в массив, как это:

var bookedDays = []; 

var date1 = new Date("04/19/2014"); 
var date2 = new Date("04/16/2014"); 

while(date1>=date2){ 
    bookedDays[bookedDays.length] = getFullDate(date2); //append date to array 
    date2.setDate(date2.getDate()+1); //increment by one day 
} 
console.log(bookedDays); 

Следующая функция адаптировано из: How do I get the current date in JavaScript?

function getFullDate(dateObj){ 

    var dd = dateObj.getDate(); 
    var mm = dateObj.getMonth()+1; //January is 0! 
    var yyyy = dateObj.getFullYear(); 

    if(dd<10) { 
     dd='0'+dd 
    } 

    if(mm<10) { 
     mm='0'+mm 
    } 

    return mm+'/'+dd+'/'+yyyy; 

} 
+0

Это сработало! Спасибо! – DConer

Смежные вопросы