Struts: выделение диапазона дат в календаре (JQuery / Javascript) - PullRequest
0 голосов
/ 19 марта 2012

Заранее большое спасибо за чтение.

Я программирую веб-приложение в Struts.

Я использую JQuery datepicker 1.7 в качестве календаря на боковой панели в представлении пользователя. (Это лучший вариант, который я мог найти)

Я хотел бы выделить в календаре группу дней, начиная с начальной даты (startDate) до конца (endDate) нескольких напоминаний, которые у меня есть в массиве . Таким образом, пользователь сможет видеть в календаре приложения все доступные дни, которые он оставил, чтобы принять меры для каждого из своих напоминаний.

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

Это моя функция JavaScript для выбора даты:

$(function(){

            $('#datepicker').datepicker({
                flat: true,
                numberOfMonths: [1,1],
                dateFormat: 'dd/mm/yy',
                beforeShowDay: highlightDays
            });

Есть еще одна функция, а именно highlightDays, которая вызывает у меня проблемы:

Этот параметр является массивом «памятки», так что памятки [i] .start это startDate, а памятки [i] .end это конечная дата напоминания i, где i = количество напоминаний в массиве.

function highlightDays(reminders) {
            for (var i = 0; i < reminders.length; i++) { 

                /** Below:
                 *If startDate is smaller than endDate,
                 *then highlight the days inbetween.
                 */

                if (new Date(reminders[i].start).toString() <= 
                    new Date(reminders[i].end).toString() ){              
                   return [true, 'ui-state-highlight'];
                 }
            } //Otherwise do not highlight
            return [true, ''];
       } 

Проблема в том, что календарь не будет отображаться даже при открытии приложения и входе в систему. А в журнале Apache или в выходных данных не отображаются ошибки. Я хотел бы знать, где, по-вашему, я могу ошибаться? Я буду продолжать расследование, но я очень ценю ваш вклад!

P.D: Я могу получить доступ к элементам массива напоминаний (endDate, startDate) и распечатать эти даты на экране, что означает, что массив напоминаний не пуст.

Еще раз спасибо за то, что нашли время прочитать.

1 Ответ

1 голос
/ 19 марта 2012

С http://jqueryui.com/demos/datepicker/#event-beforeShowDay

Функция принимает дату в качестве параметра и должна возвращать массив с [0], равным true / false, указывающим, является ли эта дата доступной для выбора,[1] равно названию (ям) класса CSS или '' для презентации по умолчанию, и [2] необязательная всплывающая подсказка для этой даты.Он вызывается для каждого дня в средстве выбора даты перед его отображением.

Ваша функция обратного вызова не принимает одну дату в качестве параметра, она принимает массив диапазонов дат.

Возможно, вы захотите выяснить, как вызывать функцию highlightdays внутри цикла значений remdinder.

...