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

jQuery Datepicker, event AFTER select, not "onSelect"

本文关键字:onSelect select Datepicker 事件 AFTER jQuery      更新时间:2023-09-26

所以我正在从jQuery UI日期选择器编写日历,这种实例的更新让我发疯。

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

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

"

初始化"功能为日历中的每个TD提供具有正确"日期"属性的UL(用于拖放),并使用外部表中的LI填充UL。

因此,如果我这样做:

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

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

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

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

所以我需要的是一种"afterNewInstanceCreated:"命令来工作。有什么想法吗?

这是它的外观ATM:(JSFiddle),点击一个日期也看到"魔术"。http://jsfiddle.net/N97QA/

真的会感谢任何帮助

在这里找到答案:

如果你在 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
    }
});
现在,日期选取器

在每次从日期选取器元素更新后都会引发一个"afterShow"事件。然后只需在数据选取器中使用此事件

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