javascript - jQuery Datepicker,选择之后的事件,而不是 "onSelect"

标签 javascript jquery jquery-ui calendar datepicker

所以我正在从 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/

非常感谢任何帮助

最佳答案

找到答案 here :

如果您在 jquery-ui 版本 1.9 之前需要“afterShow”事件,您可以覆盖 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”事件。 然后只需在datapicker中使用此事件

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

关于javascript - jQuery Datepicker,选择之后的事件,而不是 "onSelect",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19813202/

相关文章:

javascript - 该页面的脚本完成调整后,get() 可以检索完整的 html 吗?

javascript - 如何使用c#将对象序列化为json

javascript - 尝试使可拖动的表单元素水平 jQuery

jquery - 优化 jQueryUI 中的功能

javascript - 使用express angularJs和mongoDB,但 Angular 中的ngResource未加载

javascript - Google Chrome 中的页面可见性 API

javascript - AngularJS 真的是 MVC 吗?

javascript - 使用另一个 javascript 事件绕过 javascript 事件

在 IE6 和 IE7 中滚动 div 时,jQuery UI 按钮不会移动(有时会消失)

javascript - 引用 AJAX 请求中发送的数据