Добавить легенду в jQuery datepicker

Я использую стандартный jQuery Datepicker, и мне нужно изменить его, чтобы отображать легенду внизу. Когда я использую событие beforeShow, я не могу добавить легенду html в datepicker, потому что нет элемента # ui-datepicker-div, а datepicker не предоставляет событие afterShow. Это мой код:

var html = $('#datepickerLegendHolder').html();

$('#start_date.datepicker').datepicker({
        "dateFormat": 'yy-mm-dd', 
        minDate: 0, 
        showOn: "both",
        buttonImage: "/images/calendar-icon.png",
        maxDate: "+2Y",
        beforeShow: function(event, ui) { 
            $('#ui-datepicker-div').append(html);
        },
        onSelect: function (dateValue, inst) {
            $('#end_date.datepicker').datepicker("option", "minDate", dateValue);
            displayButtons();
        }
    });

У кого-нибудь есть альтернатива? Tnx

1 ответ

Решение

В то время, когда onBeforeShow событие поднято, элемент #ui-datepicker-div еще не существует

Обходной путь - использовать setTimeout с небольшой продолжительностью (например, 150 мс), чтобы добавить легенду к этому элементу в обработчике событий. Это не может быть абсолютно надежным, хотя из-за архитектуры плагина я не знаю другого пути.

Примечание: документация перечисляет событие create, но Datepicker действительно реализует фабрику виджетов, поэтому событие create не возникает!

$('#datepicker').datepicker({
    ...
    beforeShow: function(event, ui) { 
        setTimeout(function() {
            $('#ui-datepicker-div').append('lalala');
        }, 150);
    }
});​

DEMO

Другие вопросы по тегам