1

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

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

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

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

4

1 回答 1

-1

可能的问题:您尝试在datepicker它被初始化之前进行更改。我想,完成任务的最佳方法是将函数调用添加到 inicalizing 代码中datapicker

此外, .change 事件将在其附加的元素更改其状态时触发。我看不到您的 HTML 和 JQuery 代码可以肯定地说,但可能由于这个问题,该事件不会触发。

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


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

beforeShow      function(input, inst)

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

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

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

因此,您可以使用它事件 whule 初始化数据选择器来调用您的函数,该函数将从列表中排除空月份!

于 2012-06-20T16:31:29.227 回答