Datepicker与事件?

是否有一个jquery插件可以让我有一个像矩形的小日历​​,就像在日期选择器中,一些日期将是不同的颜色。 当我用鼠标查看日期时,会弹出一个弹出窗口,说明当天安排了什么事件。 当然我会用事件填充事件数组;-)

我找到的只是日期采摘(小)或日历(全屏大)。 我的网页需要的是那里有一个小日历和一个简单的鼠标hover,它会显示我希望它显示的文本。

这样的事情存在吗?

正如其他人所指出的,这可以通过jQueryUI的datepicker实现。

Datepicker具有一些内置function,可以帮助您实现目标。 具体来说, beforeShowDay事件将让您自定义每天的外观和行为,而不需要太多代码:

  1. 创建一个包含可以从datepicker的事件处理程序引用的事件的对象:

     var Event = function(text, className) { this.text = text; this.className = className; }; var events = {}; events[new Date("02/14/2011")] = new Event("Valentines Day", "pink"); events[new Date("02/18/2011")] = new Event("Payday", "green"); 

    此代码只创建一个对象,其中“keys”是事件日期,“values”是事件数据。

  2. 要使datepicker小部件始终显示(例如,不需要input ),只需将小部件应用于div

    HTML

     

    JavaScript

     $("#dates").datepicker({....}); 
  3. 点击beforeShowDay事件,并返回相应的数组。 datepicker将自动应用您指定的工具提示和类。 这是我们上面定义的Event对象派上用场的地方:

     $("#dates").datepicker({ beforeShowDay: function(date) { var event = events[date]; if (event) { return [true, event.className, event.text]; } else { return [true, '', '']; } } }); 

    这可能是最棘手的部分。 beforeShowDay事件处理程序希望您返回一个如下结构的数组:

    [0]等于true / false,表示此日期是否可选,[1]等于CSS类名称或”表示默认表示,[2]是可选的弹出工具提示。

    所以我们正在做的是在传递给处理beforeShowDay事件的函数的日期beforeShowDay事件,并从事件对象返回数据(如果存在)。

它看起来很多,但是当你把它们放在一起时,它并不是太糟糕。 看看这里的例子: http : //jsfiddle.net/andrewwhitaker/rMhVz/1/

注意CSS类必须使用!important来覆盖datepicker的默认背景,并实际应用于日期tr s内的a标签

使用jquery UI datepicker 。 通过一些额外的jquery,您可以连接鼠标hover事件并显示信息。

使用cssclass和嵌套信息可以识别日期。 显示日历后,您可以附加您的事件处理程序。

  $(document).ready(function () { $("input").datepicker(); }); $('td a').live('mouseenter', function () { alert($(this).text() + ' ' + $('.ui-datepicker-month').text() + ' ' +$('.ui-datepicker-year').text() ); }); 

选择器需要一些精确度来正确工作,但这个想法保持不变。

如果你想在一天hover时做一些特别的事情你可以附加一个.live处理程序(或委托),因为在dom完成加载之后创建了datepicker,所以需要live到day元素并且如果你做了某种查找需要在dom上显示工具提示,框或其他独特的东西。

 $(".ui-datepicker-calendar .ui-state-default").live("hover", function() { var month = $(".ui-datepicker-month").text(); var year = $(".ui-datepicker-year").text(); var day = $(this).text(); //Do something to look up the year month day.. $("h1").empty().text(month + day + year).fadeIn(); }, function() { //something on mouse out }); 

关于jsfiddle的简单示例。

但是,如果您发现jQuery UI datepicker不能满足您的需求,请查看原始的datepicker插件,该插件提供了大量的自定义function。 此外,它还在datepicker 扩展中提供了一些事件。

作为jQuery UI datepicker的替代品,您可以查看我的日期选择器: http ://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/

听起来像你正在寻找的是renderCalendar函数: http ://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/renderCalendarBankHolidays.html

该示例使用renderCallback将点击处理程序和额外文本添加到银行假日。 您应该可以轻松调整此项以添加hover处理程序。