jquery html日历未从可用日期数组中选择日期

时间:2016-07-31 18:23:20

标签: javascript jquery

仍然试图抓住JQuery。不是很擅长。

我的html日历有问题。我可以加载当前月份自动选择。在更改下拉选项时,它会切换到该月,但不会选择日期"不可用"预订。

以下是代码:

        var cal = new Calendar();

        var unavailable_days_month_1 = [1,2,3];
        var unavailable_days_month_2 = [4,5,6];
        var unavailable_days_month_3 = [7,8,9];
        var unavailable_days_month_4 = [10,11,12];
        var unavailable_days_month_5 = [13,14,15];
        var unavailable_days_month_6 = [16,17,18];
        var unavailable_days_month_7 = [19,20,21];
        var unavailable_days_month_8 = [22,23,24];
        var unavailable_days_month_9 = [25,26,27];
        var unavailable_days_month_10 = [28,29,30];
        var unavailable_days_month_11 = [2,4,31];
        var unavailable_days_month_12 = [7,9,11];

        var current_date = new Date();
        var current_month = (current_date.getMonth() + 1);
        var current_year_month = (1900 + current_date.getYear()) + "-" + current_month;
        tjq("#select-month").find("[value='" + current_year_month + "']").prop("selected", "selected");
        cal.generateHTML(current_date.getMonth(), (1900 + current_date.getYear()), "unavailable_days_month_" + current_month);
        tjq(".calendar").html(cal.getHTML());

        tjq("#select-month").change(function() {
            var selected_year_month = tjq("#select-month option:selected").val();
            var year = parseInt(selected_year_month.split("-")[0], 10);
            var month = parseInt(selected_year_month.split("-")[1], 10);
/* My problem starts from here */
            cal.generateHTML(month - 1, year, "unavailable_days_month_" + month);
            tjq(".calendar").html(cal.getHTML());
        });

提前致谢。

1 个答案:

答案 0 :(得分:1)

您的问题是您返回的是字符串,而不是数组。参考:

"unavailable_days_month_" + month

如果我是你,我会创建一个函数,如果你想做一些应该在大多数情况下工作的东西,如果用户不利用它。

function getUnavailDays (month) {
   if (month === 1) return unavailable_days_month_1
   if (month === 2) return unavailable_days_month_2
   if (month === 3) return unavailable_days_month_3
   // and so on...
   return // return if none of the cases match above.
}

它可能不是最好的解决方案,但至少

您可以稍后使用getUnavailDays(month)调用它。

编辑:

更好的解决方案;

function getUnavailDays (month) {
   switch (month) {
      case 1:
        return unavailable_days_month_1
      case 2:
        return unavailable_days_month_2
      // and so on..
      default:
        return
   }
}