【问题标题】:jquery datepicker highlight holidaysjquery datepicker 突出显示假期
【发布时间】:2012-03-11 08:59:10
【问题描述】:

我正在尝试制作一个 jquery datepicker 日历,当日期选择器上的日期悬停时,它将突出显示假期并将假期名称作为工具提示。假期日期来自一个 php 文件 (holidays.php)。我的问题是..我似乎无法突出显示所有假期,它只突出显示一个日期。更具体地说,只是第一个返回的日期。

$(document).ready(function (){
  var holiDays = (function () {
    var val = null;
    $.ajax({
        'async': false,
        'global': false,
        'url': 'holidays.php',
        'success': function (data) {
        val = data;
        }
    });
    return val;
    })();

  var result = [];
  var holiDays = holiDays.split(',');

 var s, k;

    for (s = 0, k = -1; s < holiDays.length; s++) {
        if (s % 4 === 0) {
            k++;
            result[k] = [];
        }

        result[k].push(holiDays[s]);
    }

  // This for loop is to check whether the values stored in result[] are correct

  for (i = 0; i < result.length; i++) {
  var f=result[i][0]+"-"+result[i][1]+"-"+result[i][2];
  alert(f); 
  }


  function nationalDays(date) {
    var m = date.getMonth();
    var d = date.getDate();
    var y = date.getFullYear();

  for (i = 0; i < result.length; i++) {
  var f=result[i][0]+"-"+result[i][1]+"-"+result[i][2];
 // WHEN I ALERT THE VALUE OF f HERE, 
 // IT ALWAYS DISPLAY THE FIRST VALUE IN THE RESULT ARRAY. WHY?
 alert(f);

  var d = new Date(f);

                 if (date.getFullYear() == d.getFullYear()
                      && date.getMonth() == d.getMonth()
                      && date.getDate() == d.getDate()) {
                    return [true, 'holiday', result[i][3]];
                 } else {
                  return [true];
                 }
               } 

  }


  $(function() { 
        $('input.pickerClass').live('click', function() {
            $(this).datepicker({dateFormat: 'yy-mm-dd', beforeShowDay: nationalDays  }).focus();
        });

  });



});

当我在nationalDays 函数之外提醒数组result[] 内的值时,存储的值似乎是正确的。

  for (i = 0; i < result.length; i++) {
  var f=result[i][0]+"-"+result[i][1]+"-"+result[i][2];
  alert(f); 
  }

但由于某种原因,当我在nationalDays 函数下的for 循环内提醒result[] INSIDE 的值时,它只返回存储在数组result[] 中的第一个日期。但为什么?

有人有想法吗?.. 我会非常感激。 :)

【问题讨论】:

    标签: jquery datepicker highlight


    【解决方案1】:

    我已经知道哪里出错了。

    if (date.getFullYear() == d.getFullYear()
                          && date.getMonth() == d.getMonth()
                          && date.getDate() == d.getDate()) {
                        return [true, 'holiday', result[i][3]];
                     } else {
                      return [true];
                     }
    

    应该是

    if (date.getFullYear() == d.getFullYear()
                          && date.getMonth() == d.getMonth()
                          && date.getDate() == d.getDate()) {
                        return [true, 'holiday', result[i][3]];
                     } 
                      return [true];
    

    我刚刚删除了 else 语句,它起作用了!

    【讨论】:

      猜你喜欢
      • 2012-12-11
      • 1970-01-01
      • 2013-01-17
      • 2016-12-07
      • 1970-01-01
      • 2019-12-26
      • 1970-01-01
      • 1970-01-01
      • 2015-12-14
      相关资源
      最近更新 更多