2015-01-07 3 views
0

Если я попытаюсь выделить даты на jquery datepicker, предоставив ему статический массив. Он работает абсолютно нормально. Если я сгенерирую массив внутри цикла, а затем предоставил его. Я не нашел способ подсчета дат. Код ниже.Выделите несколько дат на jquery datepicker

// var tempDates=["2015/01/07","2015/01/14","2015/01/21"]; 
       var tempDates = []; tempDates=datesToHighlight; 


       line.datepicker({disabled:false, defaultDate: dateObj, dateFormat: 'yy/mm/dd', 
        beforeShowDay: function (highlightMe) { 
         var dateString = jQuery.datepicker.formatDate('yy/mm/dd', highlightMe); 
         var highlightIndex = $.inArray(dateString.toString(), tempDates); 
         if(highlightIndex>-1) { 
          return [true, 'highlight', tips[highlightIndex]]; 
         } 
         var aIndex = $.inArray(dateString, selected); 
         return [aIndex == -1] 
        } 
       }); 

Это формат, в котором даты генерируются циклом.

2015/01/07 
2015/01/14 
2015/01/21 
2015/01/28 
2015/02/04 
2015/02/11 
2015/02/18 

Петля, которую я использовал для генерации массива.

for (var k = 0; k < selectedArrayLength; k++) { 
        if (new Date(selected[k]).getMonth() == monthIndex[ind%12]) { 

         var dateFormat = new Date(selected.splice(k, 1)); 
         var curr_date = addZ(dateFormat.getDate()); 
         var curr_month = dateFormat.getMonth(); 
         curr_month++; 
         var curr_year = dateFormat.getFullYear(); 
         var newFormat = (curr_year + "/" + addZ(curr_month) + "/" + curr_date); 
         thisMonthDates.push(newFormat); 
         //thisMonthDates.push(selected.splice(k, 1)); 
         k--; // since we removed an element we need to decrement k 
        } 
       } 


    for(var eachDt=0; eachDt<thisMonthDates.length; eachDt++) { 
        console.log(thisMonthDates[eachDt]); 
        var datesToHighlight = new Array(); 
        datesToHighlight.push(new Date(thisMonthDates[eachDt])); 

       } 

Ввод кода.

Year Difference: 2 end year: 2015 start year: 2015 
78 Difference of days. 
12 : Selected Array Length 
calendar0 
4 
2015/01/07 
2015/01/14 
2015/01/21 
2015/01/28 
4 
["2015/01/07", "2015/01/14", "2015/01/21", "2015/01/28"] 
calendar1 
4 
2015/02/04 
2015/02/11 
2015/02/18 
2015/02/25 
4 
["2015/02/04", "2015/02/11", "2015/02/18", "2015/02/25"] 
calendar2 
4 
2015/03/04 
2015/03/11 
2015/03/18 
2015/03/25 
4 
["2015/03/04", "2015/03/11", "2015/03/18", "2015/03/25"] 
SELECTED ARRAY IS EMPTY. 
0,1,2 - 2015,2015,2015 
+0

- это 'dateToHighlight' другой массив или это функция? – mikelt21

+0

действительно непонятно, какова конкретная проблема. Демонстрация может помочь вместе с лучшим объяснением проблемы – charlietfl

+0

@ mikelt21 его массив. – Superman

ответ

0

Попробуйте обновить свой for цикл для создания datesToHighlight. Вам не нужно создавать объект даты для каждого элемента thisMonthDates, и вы воссоздавали новый массив за каждый день, поэтому я переместил вашу инициализацию datesToHighlight вне цикла.

var datesToHighlight = []; 
for(var eachDt=0; eachDt<thisMonthDates.length; eachDt++) { 
    console.log(thisMonthDates[eachDt]); 
    datesToHighlight.push(thisMonthDates[eachDt]); 
} 
+0

Без успеха. Я думаю, что, обертывая каждый элемент внутри кавычек, может помочь. Как статический массив, который мы предоставляем, этот код отлично работает. И каждый элемент имеет кавычки. Как я могу обернуть каждый элемент внутри кавычек? – Superman

+0

Нет, что цитата не помогла. – Superman

+0

, что означает, что ваши даты фактически являются строками, а не объектами Date. Я пытаюсь заполнить 'dateToHighlight' как массив строк. – mikelt21

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