【问题标题】:how can add an especific ID like tooltip to a date in Jquery Datepicker?如何将特定 ID(如工具提示)添加到 Jquery Datepicker 中的日期?
【发布时间】:2014-03-26 23:44:32
【问题描述】:

您好,我是 Jquery 的初学者,我开始使用 Jquery datepicker,我使用此代码是因为对我的项目有好处,但我需要在日期中添加特定的 ID,因为单击日期时将显示一个 Div有信息

显示信息的代码不重要

JQUERY

var disabledDays = ["2014-3-5", "2014-3-13", "2014-3-28"];
var tips = ['aaa', 'bbb', 'ccc'];

//the IDs
var ids = ['first', 'second', '3er'];

$("#datepicker").datepicker({
    showButtonPanel: false,
    firstDay: 1,
    dateFormat: 'yy-mm-dd',
    beforeShowDay: function (date) {
        var m = date.getMonth(),
            d = date.getDate(),
            y = date.getFullYear();
        for (i = 0; i < disabledDays.length; i++) {
            if ($.inArray(y + '-' + (m + 1) + '-' + d, disabledDays) != -1) {
                //return [false];
                return [true, 'id='+ids[i], 'highlight', tips[disabledDays.indexOf(y + '-' + (m + 1) + '-' + d)]];
            }
        }
        return [true];
    }

});

$("#first").click(function () {
    $("#aaa-info").show();
});

这是 HTML 代码

<div id="datepicker"></div>
<div id="aaa-info" class="novisible"></div>
<div id="bbb-info" class="novisible"></div>
<div id="ccc-info" class="novisible"></div>

这是 CSS

td.highlight {
    border: none !important;
    padding: 1px 0 1px 1px !important;
    background: none !important;
    overflow:hidden;
}
.novisible{
    display:none;
    background:#000;
    height:200px;
    width:200px;
}
td.highlight a {
    background: #99dd73 url(bg.png) 50% 50% repeat-x !important;
    border: 1px #88a276 solid !important;
}

【问题讨论】:

  • 我更改了我的代码,但我无法解决我在返回行中添加 id 的问题
  • 你可以在这里查看代码jsfiddle.net/eligreen7/n3PBZ/5
  • 因此,当您单击日历中的某一天时,您希望隐藏的 div 显示有关该月那一天的信息?
  • 是的,我需要将ID分配给日期
  • 信息是为循环生成的,但主要问题是将 ID 添加到日期

标签: javascript jquery jquery-ui datepicker


【解决方案1】:

我不确定您是否要在日期选择器中为每一天添加一个 ID。但我得到了基本的功能。文档说beforeShowDay 函数必须返回一个包含三个元素的数组。您正在返回 4 个元素。此外,您不必运行循环,因为数据选择器会在日历中显示的每一天运行它。我删除了循环并编辑了返回数组,它可以工作。

这是FIDDLE

这是我更改的代码。

 beforeShowDay: function (date) {
    var m = date.getMonth(),
        d = date.getDate(),
        y = date.getFullYear();

        if ($.inArray(y + '-' + (m + 1) + '-' + d, disabledDays) != -1) {

            return [true, 'highlight', 'Tooltip: function returned true'];
        }
        else {
            return [ false, 'highlight', 'Tooltip: function returned false']
        }
  }

如果目标是显示当天的信息,我会添加一个函数来获取日期、查找页面上的隐藏元素并返回文本。像这样的。

myTip = function(date){
    //use the date to find hidden information on page
    var myDate = date.toString();
    var tip = "This date is " + myDate;
    return tip;
};

然后你可以把返回数组改成这个

 return [true, 'highlight', myTip(date) ];

New fiddle

【讨论】:

  • 您好,感谢您的回答,我知道该功能适用​​于工具提示和类,但问题是,如何在日期中添加 ID?我认为 datebeforeshow 可能是这样,如果我不能以这种方式添加 ID,我会这样做吗?
  • 我看到 datepicker 下方的函数将点击附加到 #first 元素以显示隐藏的 div。我了解您想在与点击事件匹配的日期添加一个 ID,但我认为这不是可行的方法。也尝试使用“onSelect”方法。单击日期时它将触发,然后您可以编写一个函数来确定要显示的 div。您可以在对话框中弹出隐藏的 div,用户可以在准备好后关闭该对话框。遍历由 jQuery 创建的表格并找到正确日期的单元格并不像正确的方法。据我所知
  • 请问,你能检查一下吗? jsfiddle.net/eligreen7/n3PBZ/6 我添加了 onSelect 方法,但这是我第一次使用 datepicker,我觉得我做得不好
  • 今晚晚些时候我才能检查它,但我会看看中部时间 8:00 左右。
  • 非常感谢大家的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-31
相关资源
最近更新 更多