ItsInTheGameRU
@ItsInTheGameRU

Дополнительная информация под датой datepicker jquery?

(function ($) {
            $.extend($.datepicker, {

                // Reference the orignal function so we can override it and call it later
                _inlineDatepicker2: $.datepicker._inlineDatepicker,

                // Override the _inlineDatepicker method
                _inlineDatepicker: function (target, inst) {

                    // Call the original
                    this._inlineDatepicker2(target, inst)

                    var beforeShow = $.datepicker._get(inst, 'beforeShow')

                    if (beforeShow) {
                        beforeShow.apply(target, [target, inst])
                    }
                }
            });
        }(jQuery));
// Код выше взят с просторов интернета. Он запускает beforeShow при инициализации календаря


        $('#doctorCalendar').datepicker({
            dateFormat: 'dd.mm.yy',
            minDate: 0,
            firstDay: 1,
            beforeShowDay: function (day) {
                if (new Date(day).setHours(0, 0, 0, 0) < new Date().setHours(0, 0, 0, 0)) {
                    return [false, 'last-day-js', '']
                }
                if (new Date(day).setHours(0, 0, 0, 0) === new Date().setHours(0, 0, 0, 0)) {
                    return [true, 'current-day-js ' + day.getDate() + '-' + (day.getMonth() + 1) + '-' + day.getFullYear(), '']
                }
                return [true, 'free-day-js ' + day.getDate() + '-' + (day.getMonth() + 1) + '-' + day.getFullYear(), '']
            },
            onSelect: function (day) {
                console.log(day)
            },
            beforeShow: function (input, inst) {
                $('.last-day-js').append('<small>Запись невозможна</small>')
                $('.free-day-js').append('<small>10:00 - 20:00</small>')
                let hour = new Date().getHours()
                let minute = new Date().getMinutes()
                $('.current-day-js').append('<small>' + hour + ':' + minute + ' - 20:00</small>')
            }
        })


При открытии страницы календарь работает как надо - текст подставляется под дату. Но при изменении месяца или при клике на дату все сбрасываются и не появляются вновь. Как можно выполнить функцию метода beforeShow после метода beforeShowDay?

https://jsfiddle.net/sto_uzbekov/53bzvod7/1/
  • Вопрос задан
  • 63 просмотра
Решения вопроса 1
ItsInTheGameRU
@ItsInTheGameRU Автор вопроса
Проблема решена изменением метода _generateHTML в datepicker
(function ($) {
$.extend($.datepicker, {
        _generateHTML: function( inst ) {
           //Здесь полностью скопированный метод с изменением переменной tbody
        }
}(jQuery))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы