如果当月没有航班,我已被要求从我们的jQuery datepicker的月份下拉列表中删除数月。我最初的想法是,在 beforeShow 事件中,将更改事件处理程序添加到年下拉列表中,该下拉列表将调用一个名为monthHasFlights的函数(例如,monthHasFlights) )对于那一年中的每个月(在第一次加载datepicker时手动调用它)。如果monthHasFlights()返回false,我将删除那个月。 问题 ...我的处理程序不会附加。
所以,在beforeShow事件处理程序中我有这个:
$('.ui-datepicker-year').change(function(){setDropdownMonths()});
但事件永远不会附加,即使我看到这行在firebug / tools中执行我对jQuery事件绑定的理解是你可以根据需要多次分配更改事件,处理程序将按照你的顺序触发创造它们..但我想我错了?当我尝试附加事件处理程序时,简单地说下拉列表还不存在吗?我确实尝试了一个100的setTimeout但我的事件仍然没有附加。任何建议赞赏。
答案 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来调用您的函数,这将从列表中排除空月!