具有 json 数据源的 jQuery UI Datepicker 中的事件

2023-11-30

我想在 jQuery UI Datepicker 中显示事件。我希望有事件的日子的样式与没有事件的日子不同,并且我想在将鼠标悬停在有事件的日期时显示带有事件详细信息的自定义工具提示。

问题的解答“jQuery UI Datepicker 与 jQuery Tipsy” 非常接近,但不适用于我使用的 Datepicker 配置。我使用“showOtherMonths”选项,它会关闭日期链接计算。

事件数据可在http://mydomain.com/events.json

我想要的模型:

Datepicker with events

这是我用于创建日期选择器的代码:

$('#dateDiv').datepicker({
    altField: '#dateInput',
    altFormat: 'yy-mm-dd',
    dateFormat: 'yy-mm-dd',
    firstDay: '1',
    showOtherMonths: 'true',
});

我目前不关心解决方案的 CSS 部分,只关心 javascript 部分。当鼠标悬停带有附加事件的日期时,如何使自定义工具提示出现?我如何附加事件(日历事件,而不是 javascript/DOM 事件;))?


这不是一个非常优雅的解决方案,但它似乎确实有效。有人可以想出更好的办法吗?

EDIT:这是一个正在运行代码的 jsFiddle:http://jsfiddle.net/Tobbe/JrkSN/3/

EDIT2:它一直有效,直到我单击一个日期,然后所有事件都会消失,因为beforeShowDay在这种情况下不会调用回调。我该如何解决这个问题?

getEvents();

$(function() {
    $('#dateDiv').datepicker({
        altField: '#dateInput',
        altFormat: 'yy-mm-dd',
        dateFormat: 'yy-mm-dd',
        firstDay: '1',
        showOtherMonths: 'true',
        beforeShowDay: beforeShowDay,
        onChangeMonthYear: getEvents
    });
});

var enqueuedDates = [];
var tryCounter = 0;
var events = [];

function getEvents() {
    events = [];
    enqueuedDates = [];
    $.getJSON('events.json', function(json) {
        events = json;
    });
}

function beforeShowDay(date) {
    enqueuedDates.push(new Date(date));

    if (enqueuedDates.length == 35) {
        processEnqueuedDates();
    }

    return [true, '', ''];
}

function processEnqueuedDates() {
    if (!events || events.length === 0) {
        tryCounter++;
        if (tryCounter < 100) {
            setTimeout(processEnqueuedDates, 10);
        } else {
            tryCounter = 0;
        }

        return;
    }

    tryCounter = 0;

    for (var i = 0; i < enqueuedDates.length; ++i) {
        var event = getEvent(events, enqueuedDates[i]);

        if (event) {
            var theDateCells = $('#dateDiv .ui-datepicker-calendar td');
            var hideTimeoutID;
            theDateCells.eq(i).addClass('eventPlanned').
                bind('mouseenter', function(eventText) {
                    return function() {
                        if (hideTimeoutID) {
                            clearTimeout(hideTimeoutID);
                            hideTimeoutID = null;
                        }

                        var popup = $('#eventPopup');
                        if (popup.size() == 0) {
                            popup = $('<div></div>').attr('id', 'eventPopup');
                            $('body').append(popup);
                        }

                        var pos = $(this).offset();

                        popup.html('<p>' + eventText + '</p>').
                            css('left', pos.left + 5 + 'px').
                            css('top', (pos.top - popup.height() - 2) + 'px').
                            bind('mouseenter', function() {
                                clearTimeout(hideTimeoutID);
                                hideTimeoutID = null;
                            }).
                            bind('mouseleave', function() {
                                $(this).hide();
                            }).
                            show();
                    }
                }(event.text)).
                bind('mouseleave', function(eventObject) {
                    hideTimeoutID = setTimeout(function() {
                        $('#eventPopup').hide();
                    }, 200);
                });
        }
    }
}

function getEvent(events, date) {
    return events.filter(function(event, index, arr) {
        return date - $.datepicker.parseDate('yy-mm-dd', event.date) === 0;
    })[0];
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有 json 数据源的 jQuery UI Datepicker 中的事件 的相关文章

随机推荐

  • 如何使用 Python Regex 查找首字母为大写的所有单词

    我需要找到文件中以大写字母开头的所有单词 我尝试了下面的代码 但它返回一个空字符串 import os import re matches filename C Users Documents romeo txt with open fil
  • iPhone 上的内存问题

    我开发了一个小型 iphone 商业应用程序 在我的应用程序中 我使用从服务器获取的数据 如果那时数据将存储在手机内存或 RAM 上 我认为它不安全 所以我将决定存储另一个自定义位置 这在手机中可能吗 有什么好的想法吗 如果您想要良好的安全
  • 在asp.net中使用文本框进行Gridview过滤

    我想知道如何根据文本框中输入的字符动态搜索或过滤网格视图中的记录 实现这一目标的最佳方法是什么 任何示例代码或示例都会非常有帮助 这里的技巧是仅进行数据绑定当搜索框中的文本发生变化时 但您必须始终设置数据源选择命令代码 因此 您添加一个文本
  • “svn list”忽略外部

    我的 SVN 树中有一个名为 library 的目录 它使用外部加载库 例如 zend Framework smarty 我使用一个自己编写的工具 它使用 svn list 我可以在其中选择应该上传到服务器的文件 看起来 svn list
  • 如何在 foreach 循环内从数组中删除对象?

    我遍历一个对象数组 并想根据其中一个对象的 id 属性删除它 但我的代码不起作用 foreach array as element foreach element as key gt value if key id value search
  • 如何设置 MSMQ 服务器以便可以通过 Internet 访问它

    我们在 Windows 2008 R2 服务器上有 MSMQ 并具有以下防火墙设置 1 在 允许程序通过 Windows 防火墙进行通信 中选中消息队列 2 启用TCP端口 2103 2105 1801 但是 当 C 应用程序 使用 For
  • 放大 cli :npm 错误!超出最大调用堆栈大小

    执行时 npm install g aws amplify cli 结果是 npm ERR Maximum call stack size exceeded npm ERR A complete log of this run can be
  • 是否可以为 Java 11 和 java 模块生成 hibernate 元模型?

    我有一个带有 JPA 实体和 persistence xml 的 java 模块 我想生成元模型 我尝试了两种变体 变体1
  • JSF 2.0 动态删除组件

    作为有关在 JSF 2 0 中动态添加组件 请参阅下面的链接 的已回答问题的后续内容 我喜欢使用数据表的方法 但是删除添加的组件之一怎么样 如何动态添加JSF组件 基于中的代码片段其他问题您链接后 您需要进行以下更改 将带有删除按钮的列添加
  • Google Charts:如何将参数传递到回调(JavaScript)?

    我有以下代码 google charts setOnLoadCallback drawChart function drawChart 我需要将一个名为chartID 的参数传递到drawChart 函数中 我该怎么做 似乎谷歌图表不想获得
  • 使用 C# 从 Excel 电子表格读取/写入

    我需要编写一个程序 将一些数据写入 Excel 电子表格 每行包含名字 姓氏 电话号码 电子邮件等基本内容 每个类别都在自己的列中 我什至不知道从哪里开始 如果有人可以告诉我要参考哪些程序集 或者向我指出一个网站或一本涵盖通过 C 程序从
  • Angular 5 http 删除不起作用

    我正在尝试使用 http delete 删除一篇文章 但 Angular 没有发出请求 我不确定缺少什么 博客服务 ts import Injectable from angular core import HttpClient from
  • sys.getrefcount 延续

    链接文本 我明白了引用计数的概念 因此 当我执行 del astrd 时 引用计数降至零并且 astrd 被 gc 收集 这是示例代码 这些代码是我在昨天的问题之后开发的 链接文本 one py def abc print Hello pr
  • 即使查询有效,mysqli_fetch_array 也会出错;将总导出作为 NULL 值运行

    我有以下查询 该查询在查询数据库时有效 EDIT 3 根据 Joe Swindell 的建议 可能是查询中的 SET runningTotal 0 行 要解决的问题是找到一种方法将下面的复杂查询转换为 JSON 字符串 该字符串也将保存 N
  • 过滤 LogCat 以仅获取来自 Android 中的“我的应用程序”的消息?

    我观察到 当我将 Logcat 与 Eclipse 和 ADT for Android 一起使用时 我也会从许多其他应用程序收到消息 有没有办法过滤此内容并仅显示来自我自己的应用程序的消息 注 以下答案已有 10 多年历史 这可能不再是最好
  • 以干净的 Ansible 格式显示调试输出

    我正在尝试在 Ansible 中以良好的格式显示调试命令的消息输出 目前输出如下 TASK stop Report Status of Jenkins Process ok localhost gt msg Service Jenkins
  • 如何使用 Python 将文本文件转换为 Excel

    我在名为 DOT 的文件夹中有一个文本文件 textfile txt 我正在尝试使用 Python 代码将该文件转换为 Excel 文件 Excelfile xls 我不熟悉Python 但根据其他评论 我写了下面的代码 该代码不起作用 谁
  • 如何使用 Mercurial 保存用户名和密码?

    我在个人项目中使用了 Mercurial 每次想要将某些内容推送到服务器时 我都会输入用户名和密码 我尝试将以下内容添加到 hgrc文件在我的主目录中 但它似乎被完全忽略了 ui username MY USER NAME password
  • 将 pandas 数据帧作为参数传递到 python subprocess.Popen

    我正在尝试从主脚本调用 python 脚本 我只需要从主脚本中生成一个数据帧 然后将其作为在子进程内使用的参数传递给子进程脚本 以下是我尝试编写所需的 python 主脚本 from subprocess import PIPE Popen
  • 具有 json 数据源的 jQuery UI Datepicker 中的事件

    我想在 jQuery UI Datepicker 中显示事件 我希望有事件的日子的样式与没有事件的日子不同 并且我想在将鼠标悬停在有事件的日期时显示带有事件详细信息的自定义工具提示 问题的解答 jQuery UI Datepicker 与