2015-06-26 3 views
1

Я пытался использовать этот example для подсчета дат, к сожалению, я использую разные версии jQuery и jQuery UI, и это не работает. Месяц, который выделил дни, не отображается. Как это исправить?jQuery UI datepicker выделенные даты

JQuery - v2.1.3

JQuery UI - 1.11.4

Мой код выглядит следующим образом:

<div id="calendar"></div> 

<script> 
    jQuery(document).ready(function() { 

     // An array of dates 
     var eventDates = {}; 
     eventDates[ new Date('07/07/2015')] = new Date('07/07/2015'); 

     // datepicker 
     jQuery('#calendar').datepicker({ 
      beforeShowDay: function(date) { 
       var highlight = eventDates[date]; 
       if(highlight) { 
        return [true, "event", highlight]; 
       } else { 
        return [true, '', '']; 
       } 
      } 
     }); 
    }); 
</script> 
+0

показать нам свою код, в противном случае мы не сможем помочь – depperm

+0

Обновлен мой вопрос с примером кода – Einius

ответ

0

Эта часть кода может привести к странным поведением:

var eventDates = {}; 
eventDates[ new Date('07/07/2015')] = new Date('07/07/2015'); 

В этом случае дата будет использовать его метод ToString(), чтобы вернуть ключ использовать, но какой-то объект может просто вернуть [объект Object ].

Вот почему вы должны всегда использовать строку для ключа. Кроме того, как вы можете видеть, вы дважды используете ту же дату в своем массиве карт, и это делает ваш ключ бесполезным в этом случае, потому что значение ключа ===.

Так вместо того, может быть, вы хотите использовать массив строку с toISOString:

var eventDates = []; 
eventDates.push((new Date('06/06/2015')).toISOString(), 
       (new Date('06/07/2015')).toISOString() 
       ); 

Затем вы можете использовать IndexOf, чтобы проверить, если дата в массиве:

return (eventDates.indexOf(date.toISOString()) > -1) ? [true, "event"] : [true, ""]; 

Вот является jsfiddle (спасибо depperm для шаблона):

http://jsfiddle.net/ozud01wm/1/

0

Это хороший вопрос. Я изменил версию jquery на 1.8.3 и jquery ui до 1.9.2, а затем он работает. Вот example.

+0

Существует странное поведение, eventDates [date] должен указывать на 12/04/2014, это не тот случай, он использует ключ вместо этого. – max890

+0

Это было мое плохое, однако ключ - это все, что имеет значение в этом случае. Значение может быть истинным или 1, и код будет работать одинаково. – depperm

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