我想在日历中获取当前活跃月份的月份。例如,当前月份(2012年12月)包括(但未显示)11月26日至30日,其中beforeShowDay
(日期)函数包含在“日期”中循环时。我想在开始时获得12月'11'(基于0的索引),但无法找到如何得到它。
使用date.getMonth() + 1
不起作用,因为它首先给我Novembers月号,但我想要Dec,因为那是日历中的选定月份。当我最终通过'date'进入循环时,我得到Dec,但是那时候已经很晚了。
任何想法如何得到这个?
答案 0 :(得分:2)
var datePicker = $('#datepicker')
datePicker.datepicker();
var date = datePicker.datepicker('getDate');
alert(date.getMonth())
将输出11(当前),但这仅在日历日期选择器初始化或显示后才起作用。这意味着如果您使用文档中的标记(输入字段),您将不会收到警报。解决方法可能是将datepicker设置为输入周围的div,并在输入获得或失去焦点时触发datepicker show / hide。
这个fiddle的内容。它有点难看,但它应该作为输入部分的解决方法:
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
选项,也可以是当前月份。如果您已经手动设置它,那么您已经拥有它,如果您没有,它可能与new Date().getMonth()
中的数字相同(在这种情况下,正如您可能已经猜到的那样,11)< / p>
答案 1 :(得分: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, ""]
}
});
});