Datepicker与事件?
是否有一个jquery插件可以让我有一个像矩形的小日历,就像在日期选择器中,一些日期将是不同的颜色。 当我用鼠标查看日期时,会弹出一个弹出窗口,说明当天安排了什么事件。 当然我会用事件填充事件数组;-)
我找到的只是日期采摘(小)或日历(全屏大)。 我的网页需要的是那里有一个小日历和一个简单的鼠标hover,它会显示我希望它显示的文本。
这样的事情存在吗?
正如其他人所指出的,这可以通过jQueryUI的datepicker实现。
Datepicker具有一些内置function,可以帮助您实现目标。 具体来说, beforeShowDay
事件将让您自定义每天的外观和行为,而不需要太多代码:
-
创建一个包含可以从
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”是事件数据。
-
要使
datepicker
小部件始终显示(例如,不需要input
),只需将小部件应用于div
:HTML :
JavaScript :
$("#dates").datepicker({....});
-
点击
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处理程序。