将更多事件处理程序添加到jquery datepicker month下拉列表

时间:2012-06-20 16:25:59

标签: jquery events select datepicker handler

如果当月没有航班,我已被要求从我们的jQuery datepicker的月份下拉列表中删除数月。我最初的想法是,在 beforeShow 事件中,将更改事件处理程序添加到下拉列表中,该下拉列表将调用一个名为monthHasFlights的函数(例如,monthHasFlights) )对于那一年中的每个月(在第一次加载datepicker时手动调用它)。如果monthHasFlights()返回false,我将删除那个月。 问题 ...我的处理程序不会附加。

所以,在beforeShow事件处理程序中我有这个:

$('.ui-datepicker-year').change(function(){setDropdownMonths()});

但事件永远不会附加,即使我看到这行在firebug / tools中执行我对jQuery事件绑定的理解是你可以根据需要多次分配更改事件,处理程序将按照你的顺序触发创造它们..但我想我错了?当我尝试附加事件处理程序时,简单地说下拉列表还不存在吗?我确实尝试了一个100的setTimeout但我的事件仍然没有附加。任何建议赞赏。

1 个答案:

答案 0 :(得分:-1)

可能的问题:您尝试更改datepicker,因为它是非正式的。 我想,实现任务的最佳方法是将函数调用添加到inicializing datapicker的代码中。

此外,.change事件将在其附加的元素将更改其状态时触发。我没有看到你的HTML和JQuery代码肯定地说,但可能,因为这个问题事件没有激发。

$('.ui-datepicker-year')你确定在这个元素的HTML中有CLASS而不是ID吗?


更新: 我在datapicker中找到了可以帮助你的事件:

beforeShow      function(input, inst)

可以是一个函数,它接受一个输入字段和当前的datepicker实例,并返回一个options对象来更新datepicker。它在显示datepicker之前调用。 代码示例

提供一个回调函数来将beforeShow事件作为init选项处理。

$('.selector').datepicker({
   beforeShow: function(input, inst) { ... }
});

因此,您可以使用事件whule inicialisation datapicker来调用您的函数,这将从列表中排除空月!