jQuery Datepicker,事件AFTER选择,而不是“onSelect”

时间:2013-11-06 13:19:54

标签: javascript jquery jquery-ui calendar datepicker

所以我正在编写一个来自jQuery UI datepicker的日历,这个更新实例的事情让我疯狂。

目标是使用正常表中的事件填充日历,并使用正确的信息(表中给出日期),它可以正常工作。它使用事件填充日历,您可以拖放它们以使用正确的信息更新表。这一切都已完成。

无论其;我也希望能够点击日期,并为所选的特定日期创建一个事件,这很容易。但是,当我单击所有以前的事件时,会删除因为日历的实例被刷新。 (这很难解释)。

函数“initialize”为日历中的每个TD提供一个UL(对于dragndrop)具有正确的“date”attr,并使用外部表中的LI填充UL。

所以,如果我这样做:

$("#datepicker").datepicker({ 
    firstDay: 1, //Mon-Sun
    onSelect: function() { initialize(); }
});

什么都没发生..但如果我这样做:

$("#datepicker").datepicker({ 
    firstDay: 1, //Mon-Sun
    onSelect: function() { initialize();alert(); }
});

您实际上可以看到正确填充的日历,(警报会阻止代码进一步发展),但是当按“确定”时,日历实例会刷新,事件也会消失。

所以我需要的是一种“afterNewInstanceCreated:”命令来工作... 有任何想法吗?

以下是它的外观:(JSFiddle),点击日期也看到“魔术”。 http://jsfiddle.net/N97QA/

真的会帮助任何帮助

1 个答案:

答案 0 :(得分:0)

找到答案here

如果您需要在jquery-ui版本1.9之前使用" afterShow" -event,则可以覆盖datepicker._updateDatepicker函数。

例如:

$(function() {
    $.datepicker._updateDatepicker_original = $.datepicker._updateDatepicker;
    $.datepicker._updateDatepicker = function(inst) {
        $.datepicker._updateDatepicker_original(inst);
        var afterShow = this._get(inst, 'afterShow');
        if (afterShow)
            afterShow.apply((inst.input ? inst.input[0] : null));  // trigger custom callback
    }
});

现在,datepicker引发了一个" afterShow"每次从datepicker元素更新后的事件。 然后在datapicker中使用此事件

$("#calendar").datepicker({
    firstDay: 1,
    showOtherMonths: true,
    selectOtherMonths: true,
    afterShow: function() {console.log("it works")}
});