jQuery UI datepicker prev / next破解

时间:2010-04-01 08:46:21

标签: jquery jquery-ui

好的,我正在使用jQuery UI datepicker替代可怕的AjaxToolkit datepicker,但我遇到了一个问题。

出于某种原因,日期选择器的上一个/下一个按钮不再显示正确的行为,而是从本月(选择为默认值)移至1899年12月以及之前和1900年1月的下一个。

有谁能说明为什么会这样?

绑定代码如下:

$('.jQueryCalendarComponent').live('click', function() {
    $(this).removeClass('hasDatepicker').datepicker({
    showOn: 'both',
    showAnim: '',
    dateFormat: 'dd/mm/yy',
    buttonImage: 'images/calendar.gif',
    buttonImageOnly: true
    }).focus();
 }).datepicker({
    showOn: 'both',
    showAnim: '',
    dateFormat: 'dd/mm/yy',
    "buttonImage: 'images/calendar.gif',
    buttonImageOnly: true
 });

实时('click')以类似的方式使用live来附加事件,而.jQueryCalendarComponent是一个文本框。

3 个答案:

答案 0 :(得分:0)

您不需要使用live作为日期选择器。在文本框上调用数据标签将为您设置事件。每次单击文本框时,都会在其上堆叠日期选择器。这可以解释奇怪的功能。尝试类似:

$('.jQueryCalendarComponent').datepicker({
    showOn: 'both',
    showAnim: '',
    dateFormat: 'dd/mm/yy',
    buttonImage: 'images/calendar.gif',
    buttonImageOnly: true
});

答案 1 :(得分:0)

上一个小部件生效并被覆盖,这可能会导致有趣的事情......试试这个:

$(this).datepicker('destroy').datepicker({
showOn: 'both',
showAnim: '',
dateFormat: 'dd/mm/yy',
buttonImage: 'images/calendar.gif',
buttonImageOnly: true
}).focus();

这会破坏上一个小部件并根据当前数据重新创建,removeClass()不会清除与日期选择器关联的所有内容,只应用一个属性...这将完全清除小部件。 / p>

答案 2 :(得分:0)

如果在jQuery UI对话框中加载datepicker输入,也会发生此问题。如果启用了datepicker的输入是对话框中的第一个,则UI的焦点自动设置将使输入显示在文档就绪上,从而覆盖showOn选项。似乎这发生在datepicker完全就绪之前,因此可能会出现这个问题。

因此,解决方案是避免过早关注相关输入。通过在DOM中放置另一个易受影响的元素,jQuery UI将触发焦点在该元素上。可能有一种更漂亮的方法,但这至少有效。