Událost jQuery Datepicker „After Update“ nebo ekvivalent

Používám standardní jQuery Datepicker a potřebuji upravit text v každém TD na základě některých denních informací o stavu. Uvědomuji si, že mohu zapojit beforeShowDay událost, ale to mi umožňuje pouze upravit informace CSS pro každé datum. Doufat v událost v celém kalendáři, například afterRender atd.

Mohu upravit první kalendář, který se zobrazí, ale pokud uživatel změní měsíce nebo roky, já (nebo můj kód) jsem mimo smyčku.

Odpověď

Vypadá jako afterShow() a onAfterChangeMonthYear() jsou již uvedeny vylepšení, ale nezdá se, že by se na nich ještě pracovalo.

Můžete to (zatím) implementovat sami…

Stáhněte si nejnovější nekomprimovaný zdroj v1.8.13 – viz http://blog.jqueryui.com/2011/05/jquery-ui-1-8-13/ a vyhledejte _updateDatepicker: function(inst) { poté přidejte nové volání funkce. Zde je návod, jak jsem rozložil novou funkci:

_updateDatepicker: function(inst) {
    // existing jQueryUI code cut for brevity
    this._afterShow(inst);
},
_afterShow: function(inst) {
    var afterShow = this._get(inst, 'afterShow');
    if (afterShow)
        afterShow.apply((inst.input ? inst.input[0] : null),
                [(inst.input ? inst.input.val() : ''), inst, inst.dpDiv.find('td:has(a)')]);
},

Právě jsem nakódoval funkci tak, aby měla stejný podpis jako beforeShow() ale pak přidal 3. parametr – pole <td> prvky.

Poté můžete přidat vlastní zpětné volání do datepicker() obvyklým způsobem.

<script type="text/javascript">
    $(function() {
        $('#dp').datepicker({
            afterShow: function (input, inst, td) {
               console.log(td); // needs a browser with a console (Chrome / Firefox+Firebug for example)
            }
        });
    });
</script>
<input type="text" id="dp"/>

Poznámka: Neprovedl jsem mnoho testů, ale zdá se, že je volán po vykreslení nástroje pro výběr data. Pokud to není přesně to, co hledáte, může to vyžadovat více práce, aby vyhovovalo vašim požadavkům. Doufám, že to přesto pomůže 🙂