JQuery UI datepicker:如何在呈现日历之后绑定事件?

时间:2011-03-05 03:05:18

标签: jquery events jquery-ui datepicker primefaces

我正在使用datepicker。绑定事件的常用方法,例如,beforeShowDay,将是:

$('.selector').datepicker({
   beforeShowDay: function(date) { ... }
});

我需要的是在呈现日历后绑定beforeShowDay事件。所以,首先我要渲染日历:

$('.mySpecialContainer').datepicker({
   //in this moment, for some reason, I am not allowed to bind nothing (that's not me who renders the calendar, that's why I am not allowed)
});

然后,如果我尝试以通常的方式绑定某些东西:

$('.mySpecialContainer').datepicker({
   beforeShowDay: function(date) { ... }
});

日历将 - 当然 - 再次在'.mySpecialContainer'内呈现,而不仅仅是绑定事件。我试过了:

$('.mySpecialContainer').bind('beforeShowDay', function(date) { ... });

但这只是一种绝望的行动:)

4 个答案:

答案 0 :(得分:10)

对我来说,为什么你不能就该特定bind事件(或者,就此而言,大多数datepicker事件)致电datepicker,这是没有意义的。大多数其他jQueryUI小部件允许事件的后期绑定。

但是,您可以尝试以下操作。 hasDatepicker已应用于日期选择器,并且在这些元素上再次调用.datepicker 而不是重新初始化窗口小部件,它只是修改选项:

$('.hasDatepicker').datepicker("option", "beforeShowDay", 
    function(date) { ... });

答案 1 :(得分:1)

$('.ui-datepicker-current-day').click();

答案 2 :(得分:1)

使用

$('.hasDatepicker').datepicker("option", "beforeShowDay", 
    function(date) { ... });

我有下一个错误:

  

TypeError:$(...)。datepicker不是函数

$(".hasDatepicker").datepicker('option', 'beforeShowDay', function(event) {

好像你没有测试过这个。

答案 3 :(得分:-2)

您需要.live()http://api.jquery.com/live/

$('.mySpecialContainer').live('beforeShowDay', function(date) { ... });

第二个想法,我想我误解了这个问题......你需要一个没有函数的日期选择器,然后再给它一个函数?你可能最好删除datepicker并重新开启。