无法为日期选取器中的每个突出显示日期动态设置工具提示

can not set tooltip dynamically for each highlighted dates in datepicker

本文关键字:日期 显示 动态 设置 工具提示 选取      更新时间:2023-09-26

我已经使用jquery日期选择器日历为某些日期做了突出显示。我的问题是,我正在尝试为每个突出显示但无法实现的日期提供工具提示!

我尝试的代码,

beforeShowDay: function(date) {
    var highlightdays=["2014-11-20", "2014-11-21", "2014-11-24", "2014-11-25"];
    var whosebday=["mani-bday","john-bday","saro-bday","mikel-bday"];
    var y = date.getFullYear().toString(); // get full year
    var m = (date.getMonth() + 1).toString(); // get month.
    var d = date.getDate().toString(); // get Day
    //alert(m.length);
    if(m.length == 1){ m = '0' + m; } // append zero(0) if single digit
    if(d.length == 1){ d = '0' + d; } // append zero(0) if single digit
    //var currDate = y+'-'+m+'-'+d;

for (var i = 0; i < highlightdays.length; i++) {
  if($.inArray(y + '-' + (m) + '-' + d,disabledDays) != -1) {
  //alert("i value"+i);
  return [true, 'cssdate', 'Today bday for:'+whosebday[i]];
     }
        var day = date.getDay();
        return [(day != 0), ''];//Disable all sundays

        }
        return [true];
}

我想问题是i价值不会增加whosebday[i].

注意:输出是,mani-bday([0])只适用于所有日期。有人告诉我我错在哪里?

> 错误在于使用for循环并在内部$.inArray$.inArray为您提供日期的索引(如果找到)或其他-1。您的循环总是点击return语句。因此,它始终执行一次且仅执行一次迭代。因此,为什么你总是得到i = 0.

摆脱循环,如果找到 $.inArray 返回的相应索引,则返回 true 。稍微重构一下你的代码:

beforeShowDay: function(date) {
    var y = date.getFullYear().toString(); // get full year
    var m = (date.getMonth() + 1).toString(); // get month.
    var d = date.getDate().toString(); // get Day
    if(m.length == 1){ m = "0" + m; } // append zero(0) if single digit
    if(d.length == 1){ d = "0" + d; } // append zero(0) if single digit
    var ymd = y + '-' + (m) + '-' + d;
    var i = $.inArray(ymd, highlightdays);
    if (i != -1) {
        return [true, "cssdate", whosebday[i]];
    }
    var day = date.getDay();
    return [day != 0, ''];//Disable all sundays
}

查看演示