5

我想在日历中获取当前活动月份的月份。例如,当前月份(2012 年 12 月)包括(但不显示)11 月 26 日至 30 日,beforeShowDay(date) 函数在循环“日期”时包括该日期。我想在一开始就获得 Dec '11' (基于 0 的索引),但找不到如何获得它。

使用date.getMonth() + 1不起作用,因为它首先给了我 11 月的月份编号,但我想要 12 月,因为那是日历中选定的月份。当我最终通过“日期”进入循环时,我得到了 12 月,但那时为时已晚。

任何想法如何得到这个?

4

2 回答 2

2
var datePicker = $('#datepicker')
    datePicker.datepicker();
var date  =  datePicker.datepicker('getDate');

alert(date.getMonth())

将输出 11(当前),尽管这仅在日历日期选择器已初始化或显示后才有效。这意味着如果您使用文档(输入字段)中的标记,您将不会收到任何警报。解决此问题的方法可能是将日期选择器设置为围绕输入​​的 div,并在输入获得或失去焦点时触发日期选择器显示/隐藏。

在这把小提琴上的东西。这有点难看,但它应该作为输入部分的解决方法:

var datePicker = $('#datepicker')
    datePicker.datepicker();
    datePicker.hide();

var date  =  datePicker.datepicker('getDate');

alert(date.getMonth());

$("[rel='#datepicker']").focus(function(){
   datePicker.show(); 
});

$("[rel='#datepicker']").blur(function(){
   datePicker.hide(); 
});

使用以下 HTML:

<input rel='#datepicker' type='text'/>
<div id='datepicker'></div>​

更新 您还询问如何获取日历上的月份的beforeShow方法。在我看来,你有两种选择。您要么设置了覆盖该defaultMonth选项的月份,要么将其设置为当前月份。如果你手动设置了它,你已经有了它,如果你没有,它可能只是与 in 相同的数字new Date().getMonth()(在这种情况下,正如你可能猜到的那样,11)

于 2012-12-14T09:29:23.870 回答
1

如果我理解正确,这就是你要找的东西:http: //jsfiddle.net/kACfV/

// Initially, set current date as the active month.
var activeMonth = new Date().getMonth() + 1;

$(function() {
    $("#datepicker").datepicker({ 
        // This is run before beforeShowDay(date).
        onChangeMonthYear: function (year, month, inst) {
            activeMonth = month; // Store active month when month is changed.
        },
        beforeShowDay: function (date) {
            // Do your logic here with activeMonth.
            console.log(date + " > " + activeMonth);
            return [true, ""]
        }
    });
});
于 2012-12-14T09:58:12.907 回答