jQuery Datepicker - 仅显示特定月份(不是范围)

时间:2015-09-08 10:51:43

标签: javascript jquery datepicker

我试图强制我的jQuery Datepicker只允许选择五月和十月的月份,并根据用户是在几个月内向前推进还是向后推进来增加或减少年份。

到目前为止,我已使用以下代码更接近此目标,但不知道用户是否在日期选择器的月份选择器上向前或向后点击我无法知道是否增加或计算年份价值。

$("#ApplicantExpectedStartDate").datepicker({
    onChangeMonthYear: function (year, month, inst) {
        // Force datepicker to display only May and October

        if ((month > 5) && (month < 10)) {
            $(this).datepicker("setDate", new Date(year, 9, 1));
            $(this).datepicker("refresh");
        }

        if (month > 10) {
            $(this).datepicker("setDate", new Date(year, 4, 1));
            $(this).datepicker("refresh");
        }
    },
    dateFormat: "dd/mm/yy",
    changeYear: true
});

是否有任何事件会在onChangeMonthYear之前触发,我可以使用它来比较新日期和旧日期以进行比较?有没有比我目前正在尝试的更简单的方法?

jsfiddle here:http://jsfiddle.net/jfejhjs8/4/

1 个答案:

答案 0 :(得分:0)

它不是非常优雅,但这提供了我想要的结果。

$("#ApplicantExpectedStartDate").datepicker(
                    {
                        onChangeMonthYear: function (year, month, inst) {

                            // Force datepicker to display only May and October

                            // Navigating FROM May
                            if (month == 4) {
                                $(this).datepicker("setDate", new Date(year - 1, 9, 1));
                                $(this).datepicker("refresh");
                            }

                            if (month == 6) {
                                $(this).datepicker("setDate", new Date(year, 9, 1));
                                $(this).datepicker("refresh");
                            }

                            // Navigating FROM October
                            if (month == 9) {
                                $(this).datepicker("setDate", new Date(year, 4, 1));
                                $(this).datepicker("refresh");
                            }

                            if (month == 11) {
                                $(this).datepicker("setDate", new Date(year + 1, 4, 1));
                                $(this).datepicker("refresh");
                            }
                        },
                        dateFormat: "dd/mm/yy",
                        changeYear: true
                    }
            );