как обновить датупикер? функция .datePickerMultiMonth()

Очень нравится датапикер. Большое спасибо за эту замечательную библиотеку!

У меня есть один вопрос для вас, основанный на этом примере (встроенный указатель даты):

http://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/datePickerMultiMonth5.html

Я добавил функцию «renderCallback», чтобы отключить дни недели на основе флажков... (например, когда установлен флажок суббота, отключить все показанные субботы).

Это прекрасно работает при инициализации календаря с помощью datePickerMultiMonth().

Но как я могу обновить встроенный календарь при изменении одного из флажков (например, отменить выбор понедельника)?

Как есть: когда я устанавливаю / снимаю флажок, средство выбора даты остается неизменным ... только после ручного перехода на следующий месяц он обновляется и отключается, например. все понедельники... это должно происходить сразу же при изменении флажка понедельника.

У вас есть идеи, как я могу обновить датупикет? Большое спасибо за твою помощь!

Привет, Маркус


person Markus    schedule 25.01.2010    source источник


Ответы (3)


.datepicker( "refresh" )

Вы можете найти его на странице http://jqueryui.com/demos/datepicker/#method-refresh. Вкладка "Методы"

person BlondinkaBrain    schedule 16.05.2012
comment
Чтобы очистить старые настройки, удалите средство выбора даты и воссоздайте его, вероятно, лучше всего. Просто используйте .datepicker(destroy), а затем повторно инициализируйте в обратном вызове. - person FigletNewton; 02.11.2017

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

$mm.empty().datePickerMultiMonth({});

Однако у этого есть некоторые недостатки, поскольку состояние вашего средства выбора даты не сохраняется (например, отображаемый месяц, выбранные даты и т. д.).

Поэтому я просто внес некоторые изменения в плагин и представил новый метод: dpmmRerenderCalendar в средстве выбора нескольких месяцев (и соответствующий dpRerenderCalendar в самом средстве выбора даты).

Вы можете увидеть пример этого в действии здесь:

http://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/datePickerMultiMonth7.html

И можете получить последний код плагина с моего сайта или из репозитория googlecode.

person vitch    schedule 25.01.2010

Немного взглянув на источник, кажется, вам придется сделать что-то вроде этого:

$.event._dpCache[$('.date-pick')[0]._dpId]._applyRenderCallbacks()

или, возможно, это:

$.event._dpCache[$('.date-pick')[0]._dpId]._rerenderCalendar()

Часть $.event._dpCache[$('.date-pick')[0]._dpId] используется для получения первого внутреннего объекта DatePicker, соответствующего CSS '.date-pick', который необходим для доступа к внутренним функциям _applyRenderCallbacks и _rerenderCalendar.

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

person Tobias Cohen    schedule 25.01.2010
comment
Хорошая детективная работа и хороший обходной путь из-за отсутствия публичного доступа к соответствующему методу плагина ... Это было бы лучшим решением на момент ответа на вопрос. Я только что обновил плагин, чтобы метод повторного рендеринга был общедоступным, что делает решение более удобным для сопровождения... - person vitch; 25.01.2010