datepicker beforeShowDay返回3个月

时间:2012-11-08 09:46:59

标签: javascript jquery datepicker

我需要在jquery datepicker日历中禁用某一天,所以在函数beforeShowDay中我写这个:

beforeShowDay: function(date){
            if(parseInt(calMonth) != parseInt(date.getMonth())){
                calMonth = date.getMonth();
                alert(calMonth + ' - ' + date.getMonth());
            }
            return {0: true};
        }

其中calMonth包含当前月份编号。现在如果我运行这个,我会得到3个按顺序显示的警报: 9-9,比10-10和11-11。为什么我有3个消息,虽然它不应该向我显示任何内容(因为当我打开datepicker时它默认显示当前月份的日历,所以if(parseInt(calMonth)!= parseInt(date.getMonth()))应该返回假。 我还设置了numberOfMonths:1。

1 个答案:

答案 0 :(得分:1)

出现同样的问题,这就是我修复的方法:

$("#datepicker").datepicker({ showWeek: true, showOtherMonths : false,
    //I'm using onChangeMonthYear to always keep my datepicker month updated
    onChangeMonthYear: function(year, month, inst){
        $(this).datepicker( "setDate", month + '/1/' + year );
    },
    beforeShowDay: function(date) {
        //Now I can get only the days of the current selected month, and do whatever I want...
        if(date.getMonth()==$(this).datepicker('getDate').getMonth()) 
            console.log(date.getDate()+' - '+date.getMonth()+' - '+$(this).datepicker('getDate').getMonth());

        //keep returning as usual to the datepicker
        return [true, ''];
    } 
});

希望有帮助=)