Хобрук: Ваш путь к мастерству в программировании

JQuery: средство выбора даты, выделяющее диапазон дат

Я программирую веб-приложение Struts, используя JQuery 1.7 Datepicker на одном из моих jsps, чтобы реализовать календарь, который может выделять напоминания для пользователя.

У меня есть вопрос:

Я хочу выделить диапазон дат в средстве выбора даты. С моим кодом консоль Javascript не показывает ошибок, но диапазон дат не выделяется при входе в систему. это моя функция:

$(function(){

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

У меня есть массив напоминаний, каждое напоминание имеет 3 атрибута: startDate, endDate и unit (связанный блок)

В событии beforeShowDay активируется функция highlightDays:

function highlightDays(date) {

     //For all reminders in the db
   for (var i = 0; i < reminders.length; i++) { 

    //If the current date in between the start and end date of reminder
      if( (new Date(reminders[i].start).getTime())  
                       <= date.getTime()                            
                      &&  (date.getTime())                           
                       <= (new Date(reminders[i].end).getTime()))  date
                { 
                  //Then highlight the current date             
                   return [true, 'ui-state-highlight',reminders[i].unit];

                }else{   //Otherwise do not highlight                          
                   return [true, ''];  
                }
           }          
      }

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

Большое спасибо за чтение!


  • У вас возникли проблемы с выбором диапазона или использованием значения? 19.03.2012
  • О, спасибо за комментарий! Что ж, моя проблема заключается в том, что даже если у меня есть диапазон (дата начала и окончания в напоминаниях), и я пытаюсь выделить дни между ними в календаре, он будет выделять только текущий день, а не диапазоны дат, которые я задал это выделить в функции highlightDays 19.03.2012
  • привет, вы ищете что-то вроде этого: jsbin.com/evudo, ура 19.03.2012
  • stephencelis.github.com/timeframe/#example_information 20.03.2012
  • @MetalFrog Хороший у тебя календарь, приятель! +1 ; это твой ребенок? Не похоже на средство выбора даты или на разветвленный код средства выбора даты; ваше здоровье 20.03.2012
  • Большое спасибо за помощь! Я посмотрю на ваши источники! 20.03.2012
  • Круто, дай нам знать, как дела, ура 20.03.2012
  • @Tats_innit Нет, на работе они хотели иметь календарь «Google Analytics» на наших вещах, потратили много времени на поиск того, который соответствовал бы нашим требованиям. Я просто помню, что именно этот запрос был одной из причин, по которой мы побежали с ним. 20.03.2012
  • @MetalFrog Савит; спс за ссылку! 20.03.2012

Ответы:


1

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

 $(function () {
            var today = new Date();
            var thisYear = (today).getFullYear();
            var fromDate = '1/1/2000'   //this is the initial from date to set the datepicker range
            var toDate = '1/7/2000' // this is the initial to date to set the datepicker range

//... initialize datepicker....
  },
  beforeShowDay: function(date){
        //if the date is in range
        if (date >= fromDate && date <= toDate) { 
           return [true, 'ui-individual-date', '']; //applies a css class to the range
         }
         else {
            return [true, '', ''];
          }
    },
   onSelect: function (dateText, obj) {

//sets the new range to be loaded on refresh call, assumes last click is the toDate              
     fromDate = toDate; 
     toDate = new Date(dateText); 

    $(".classDp1").datepicker("refresh"); 
    $(".classDp2").datepicker("refresh"); 
  },

Каждый раз, когда вы обновляете, вызывается функция beforeShowDay с новым диапазоном fromDate и toDate. Наличие переменных вне функции и их изменение внутри позволяет применять выделение из css при каждом щелчке.

17.03.2015
Новые материалы

Освоение информационного поиска: создание интеллектуальных поисковых систем (глава 1)
Глава 1. Поиск по ключевым словам: основы информационного поиска Справочная глава: «Оценка моделей поиска информации: подробное руководство по показателям производительности » Глава 1: «Поиск..

Фишинг — Упаковано и зашифровано
Будучи старшим ИТ-специалистом в небольшой фирме, я могу делать много разных вещей. Одна из этих вещей: специалист по кибербезопасности. Мне нравится это делать, потому что в настоящее время я..

ВЫ РЕГРЕСС ЭТО?
Чтобы понять, когда использовать регрессионный анализ, мы должны сначала понять, что именно он делает. Вот простой ответ, который появляется, когда вы используете Google: Регрессионный..

Не зря же это называют интеллектом
Стек — C#, Oracle Опыт — 4 года Работа — Разведывательный корпус Мне пора служить Может быть, я немного приукрашиваю себя, но там, где я живу, есть обязательная военная служба на 3..

LeetCode Проблема 41. Первый пропущенный положительный результат
LeetCode Проблема 41. Первый пропущенный положительный результат Учитывая несортированный массив целых чисел, найдите наименьшее пропущенное положительное целое число. Пример 1: Input:..

Расистский и сексистский робот, обученный в Интернете
Его ИИ основан на предвзятых данных, которые создают предрассудки. Он словно переходит из одного эпизода в другой из серии Черное зеркало , а вместо этого представляет собой хронику..

Управление состоянием в микрофронтендах
Стратегии бесперебойного сотрудничества Микро-фронтенды — это быстро растущая тенденция в сфере фронтенда, гарантирующая, что удовольствие не ограничивается исключительно бэкэнд-системами..