Как обновить DatePicker? function .datePickerMultiMonth () - PullRequest
3 голосов
/ 25 января 2010

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

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

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

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

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

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

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

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

Ура, Маркус

Ответы [ 3 ]

10 голосов
/ 16 мая 2012
.datepicker( "refresh" )

Вы можете найти его на http://jqueryui.com/demos/datepicker/#method-refresh перейдите на вкладку «Методы»

2 голосов
/ 25 января 2010

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

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

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

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

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

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

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

1 голос
/ 25 января 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.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...