jquery日历插件,可自定义日期内容

article/2025/8/25 6:51:11

效果图:

 使用:

<link href="static/css/raoCalendar.css" rel="stylesheet" type="text/css"><script src="static/js/jquery.min.js"></script>
<script src="static/js/raoCalendar.js"></script>
<script>var data = [{ data: "2022-05-18", content: "1"},{ data: "2022-05-20", content: "1"},{ data: "2022-05-26", content: "1"} // content内容可传入html字符串];var calendar = $(".calendar-container").raoCalendar({data: data,activeClass: "active-bg",todayClass: "today-bg",prevMonthClick: function(year,month){console.log("prev",year,month);},nextMonthClick: function(year,month){console.log("next",year,month);},dayClick: function(date,item){console.log(date,item);}});calendar.setDate("2020-05-31"); //设置日期calendar.setData(data);	// 设置日程数据</script>

raoCalendar.js

;(function($){$.fn.raoCalendar = function(options){var _this = $(this);var today = getToday();var defaults = {//各种参数,各种属性data: [],isActiveToday: true,activeClass: "",todayClass: "",prevMonthClick: function(year,month){},nextMonthClick: function(year,month){},dayClick: function(date){}}var options = $.extend(defaults,options);_this.setDate = function(date){if(date){var year = date.substr(0,4),month = date.substr(5,2);$("#years").val(year);$("#months").val(month);settopmonth(year,month);var days = getDaysInOneMonth(year,month);//某个时间的当月天数var week_time = new Date(year,month-1,1);var week = week_time.getDay(); //此月第一天星期几set_table(week,days,year,month);setTimeout(function(){setDayActive('day',date);options.dayClick(date);},0);}};_this.setData = function(data){options.data = data;$(".calendar .table .tbody .td").each(function(){var day = $(this).data("date");var item = data.find(function(it){ return it.date && it.date==day; });var itemIndex = data.findIndex(function(it){ return it.date && it.date==day; });if(item && item.content){$(this).attr("data-index",itemIndex);$(this).find(".td2").html(item.content);}});};initPage();$(".calendar .prev_month_btn").click(function(){ //上一月按钮var dates = prev_month();options.prevMonthClick(dates[0],dates[1]);});$(".calendar .next_month_btn").click(function(){ //下一月按钮var dates = next_month();options.nextMonthClick(dates[0],dates[1]);});$(".calendar .table .tbody").on("click",".td",function(){  //td点击事件var date = $(this).data("date");var dataIndex = Number($(this).attr("data-index"));if(date){setDayActive('day',date);if(dataIndex!=NaN && options.data[dataIndex]){options.dayClick(date,options.data[dataIndex]);}else{options.dayClick(date,null);}}});function initPage(){var html = '<div class="calendar">';html +=     '<input type="hidden" value="" id="years" /><input type="hidden" value="" id="months" />';html +=     '<div class="title"><a class="prev_month_btn"><i class="iconfont icon-left"></i></a><span id="month"></span><a class="next_month_btn"><i class="iconfont icon-right"></i></a></div>';html +=     '<div class="calendars">';html +=         '<div class="table">';html +=             '<div class="thead">';html +=                 '<div class="tr">';html +=                     '<div class="td">日</div>';html +=                     '<div class="td">一</div>';html +=                     '<div class="td">二</div>';html +=                     '<div class="td">三</div>';html +=                     '<div class="td">四</div>';html +=                     '<div class="td">五</div>';html +=                     '<div class="td">六</div>';html +=                 '</div>';html +=             '</div>';html +=             '<div class="tbody">';html +=                 '<div class="tr"></div>';html +=                 '<div class="tr"></div>';html +=                 '<div class="tr"></div>';html +=                 '<div class="tr"></div>';html +=                 '<div class="tr"></div>';html +=                 '<div class="tr"></div>';html +=                 '<div class="tr"></div>';html +=             '</div>';html +=         '</div>';html +=     '</div>';html += '</div>';_this.empty();_this.append(html);setTimeout(function(){start_calendar();if(options.data && options.data.length>0){_this.setData(options.data);}// 是否默认选中今天的日期if(options.isActiveToday){setTimeout(function(){$(".calendar .table .tbody .td").each(function(){var day = $(this).data("date");if(day==today){$(this).click();}});},0)}},0);}function start_calendar(){  //开始日历var date = new Date();var year = date.getFullYear();var month = date.getMonth()+1;  //本月是几月month = month<10?'0'+month:month;var day = date.getDate(); //今天是几号var curMonthDays = new Date(date.getFullYear(), (date.getMonth()+1), 0).getDate();  //本月有几天date.setDate(1); //设置当前日期为1号var week = date.getDay();  //一号星期几set_table(week,curMonthDays,year,month); //添加td,并且加上日期settopmonth(year,month); //设置日历的年月$("#years").val(year);$("#months").val(month);}function settopmonth(year,month){  //设置年月$(".calendar #month").html(year+"年 "+month+"月");}function set_table(week,curMonthDays,year,month){  //设置日期。添加td等var n=1;var dateStr = year + "-" +month + "-";$(".calendar .table .tbody .tr").html(null);for(i=0;i<42;i++){if(i/7<1){if(i<week){var html = "<div class='td'><div class='td1'></div><div class='td2'></div></div>";$(".calendar .table .tbody").children().eq(0).append(html);}else if(i>=week){if(n<10) var day = '0'+n;var date = dateStr + day;var html = "<div class='td' data-date='"+date+"'><div class='td1'>"+day+"</div><div class='td2'></div></div>";n++;$(".calendar .table .tbody").children().eq(0).append(html);}}else if(i/7<2 && i/7>=1){if(n<10){var day = '0'+n;var date = dateStr + day;var html = "<div class='td' data-date='"+date+"'><div class='td1'>"+day+"</div><div class='td2'></div></div>";}else{var date = dateStr + n;var html = "<div class='td' data-date='"+date+"'><div class='td1'>"+n+"</div><div class='td2'></div></div>";}n++;$(".calendar .table .tbody").children().eq(1).append(html);}else if(i/7<3 && i/7>=2){if(n<10){var day = '0'+n;var date = dateStr + day;var html = "<div class='td' data-date='"+date+"'><div class='td1'>"+day+"</div><div class='td2'></div></div>";}else{var date = dateStr + n;var html = "<div class='td' data-date='"+date+"'><div class='td1'>"+n+"</div><div class='td2'></div></div>";}n++;$(".calendar .table .tbody").children().eq(2).append(html);}else if(i/7<4 && i/7>=3){var date = dateStr + n;var html = "<div class='td' data-date='"+date+"'><div class='td1'>"+n+"</div><div class='td2'></div></div>";n++;$(".calendar .table .tbody").children().eq(3).append(html);}else if(i/7<5 && i/7>=4){if(n>curMonthDays){var html = "<div class='td'><div class='td1'></div><div class='td2'></div></div>";$(".calendar .table .tbody").children().eq(4).append(html);}else{var date = dateStr + n;var html = "<div class='td' data-date='"+date+"'><div class='td1'>"+n+"</div><div class='td2'></div></div>";n++;$(".calendar .table .tbody").children().eq(4).append(html);}}else if(i/7<6 && i/7>=5){if(n>curMonthDays){var html = "<div class='td'><div class='td1'></div><div class='td2'></div></div>";$(".calendar .table .tbody").children().eq(5).append(html);}else{var date = dateStr + n;var html = "<div class='td' data-date='"+date+"'><div class='td1'>"+n+"</div><div class='td2'></div></div>";n++;$(".calendar .table .tbody").children().eq(5).append(html);}}}setDayActive('today',today); //设置今天的背景颜色}function setDayActive(type,date){var className = options.activeClass?options.activeClass:'active';if(type=='today'){className = options.todayClass?options.todayClass:'today';}$(".calendar .table .tbody .td").each(function(){var day = $(this).data("date");if(day==date){$(this).addClass(className);}else{$(this).removeClass(className);}});}function next_month(){var year = parseInt($("#years").val());var month = parseInt($("#months").val());if(month==12){year = year+1;month = 1;}else{month = month+1;}month = month<10?'0'+month:month;$("#years").val(year);$("#months").val(month);settopmonth(year,month);var days = getDaysInOneMonth(year,month);//某个时间的当月天数var week_time = new Date(year,month-1,1);var week = week_time.getDay(); //此月第一天星期几set_table(week,days,year,month);return [year,month];}function getDaysInOneMonth(year, month){month = parseInt(month, 10);var d= new Date(year, month, 0);return d.getDate();}function prev_month(){var year = parseInt($("#years").val());var month = parseInt($("#months").val());if(month==1){year = year-1;month = 12;}else{month = month-1;}month = month<10?'0'+month:month;$("#years").val(year);$("#months").val(month);settopmonth(year,month);var days = getDaysInOneMonth(year,month);//某个时间的当月天数var week_time = new Date(year,month-1,1);var week = week_time.getDay(); //此月第一天星期几set_table(week,days,year,month);return [year,month];}function getToday(){var date = new Date();var year = date.getFullYear(),month = date.getMonth() + 1,day = date.getDate();month = month<10?'0'+month:month;day = day<10?'0'+day:day;return year + "-" + month + "-" +day;}return _this;}})(jQuery);

raoCalendar.css


.calendar{width: 100%;overflow: hidden;
}
.calendar .title{width: 100%;height: 40px;line-height: 40px;text-align: center;font-size: 20px;font-weight: bold;
}
.calendar .title .prev_month_btn{display: block;float: left;line-height: 40px;font-size: 15px;margin-left: 10px;text-decoration: none;cursor: pointer;
}
.calendar .title #month{color: #585858;font-weight: 200;
}
.calendar .title .next_month_btn{display: block;float: right;line-height: 40px;font-size: 15px;margin-right: 10px;text-decoration: none;cursor: pointer;
}
.calendar .calendars{width: 100%;margin: 0 auto;/*background: #FFCC99;*/
}
.calendar .calendars .table{border: 0;margin: 0;width: 100%;text-align: center;
}
.calendar .calendars .table .tr{display: flex;align-items: center;justify-content: space-between;
}
.calendar .calendars .table .thead{color: #888888;
}
.calendar .calendars .table .td{border: 0;text-align: center;width: 40px;height: 40px;padding: 0;padding-top: 5px;position: relative;cursor: pointer;border-radius: 50%;color: #333;
}
.calendar .calendars .table .td.today{background-color: rgba(0,0,0,0.2);color: #000;
}
.calendar .calendars .table .td.active{background-color: #999;color: #fff;
}
.calendar .calendars .table .td .td1{width: 100%;height: 20px;line-height: 20px;text-align: center;
}
.calendar .calendars .table .td .td2{width: 100%;height: 15px;line-height: 15px;text-align: center;font-size: 12px;
}


http://chatgpt.dhexx.cn/article/RJk63E5T.shtml

相关文章

两款超好用js日历插件(fullcalendar和zabuto_calendar)

这两款插件特别类似,其实用其中一款即可。 先展示一下我用这两款插件制作的排班系统 这个是fullcalendar插件制作的排班页面,左边新建一系列组和组员,可以将人员直接拖拽至右边的日历上,不同组以颜色区别。 这个是将上面的排班内容用zabuto_calendar插件显示出来,黄色区域…

BootStrap日历插件

BootStrap日历插件 前端引入插件三大步骤 引入插件所需的资源文件 <%--引入BootStrap日历插件相关资源文件--%><%--按照资源文件相互依赖的顺序来引入--%><script type"text/javascript" src"jquery/jquery-1.11.1-min.js"></scrip…

jQuery实现移动端手机选择日期日历插件

效果图 calendar.css html, body {color: #333;margin: 0;height: 100%;font-family: "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, Verdana, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;font-weig…

uniapp日历插件

日历插件 效果图一、使用方法二、组件编写&#xff0c;两个文件、直接上代码month.vuecalendar.vue 效果图 一、使用方法 <template><view><view class"" click"open"><text>展示日历{{value[0]}}-{{value[1]}}</text><…

calendar.js多种形式日历插件

下载地址 calendar.js是一款强大的日历插件&#xff0c;有多种形式的日历插件&#xff0c;比如&#xff0c;选择年、选择月、范围等。 dd:

日历插件:bootstrap-datetimepicker

1. 简述 前端插件使用步骤&#xff1a; 1)引入开发包&#xff1a;.js,.css 下载开发包&#xff0c;拷贝到项目webapp目录下 把开发包引入到jsp文件中&#xff1a;<link><script> 2)创建容器&#xff1a;<input type"text"…

最棒的 10 款 jQuery 日历插件

RT&#xff0c; 最棒的 10 款 jQuery 日历插件 做个记号&#xff0c;以后就不用再翻来翻去 1、JavaScript Calendar, JSCal2 地址&#xff1a;点击打开链接 2、Date Picker 地址&#xff1a;点击打开链接 3、 jQuery Frontier Calendar 地址&#xff1a;点击打开链接…

vue日历插件vue-calendar

原始效果&#xff1a; 修改后的效果&#xff1a; 接下来&#xff0c;我们使用它&#xff5e; 1.安装 npm i vue-calendar-component --save cnpm i vue-calendar-component --save //国内镜像 2.在使用到日历插件的文件中引入 import Calendar from vue-calendar-componen…

使用JS实现简单的日历插件

实现简单的日历插件 一、简要介绍二、基础代码html部分js部分 一、简要介绍 实现一个如下图所示的日历&#xff0c;这边主要提供html部分和js部分的代码&#xff0c;css部分大家自行编写哦。 二、基础代码 html部分 其实就是一个div容器&#xff0c;为其设置相应的id值。 <…

FullCalendar - 开源的多功能 JavaScript 日历插件

本文字数&#xff1a;747 字 9图 阅读完需&#xff1a;约 4 分钟 点击上方“青年码农”关注 回复“源码”可获取各种资料 FullCalendar 是一个支持 React、Vue、Angular 和原生 JavaScript 的日历插件&#xff0c;FullCalendar 拥有超过 300 种设置&#xff0c;支持模块化导入&…

HTML页面日历插件

web页面显示日历插件。如下图 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title></title><style>body,td,.p1,.p2,.i {font-family: arial}body {margin: 6px 0 0 0;background-color: #fff;color: #000;}tab…

js日历插件

日历插件&#xff1a;bootstraprap-datetimepicker 前端插件使用步骤&#xff1a; 1.引入开发包&#xff1a; js css 文件 下载开发包&#xff0c;拷贝到项目webapp目录下 把开发包引入到jsp文件中&#xff1a; <link rel"stylesheet" type"text/css&qu…

超好用的js 日历插件 日期插件 日期日历选择控件

前情提要&#xff1a; 主要是目前项目较小&#xff0c;仅需要一个日历插件&#xff0c;就没有选择引用UI框架&#xff0c;单纯找了一个日历插件&#xff0c;外观相对简单大方&#xff0c;还不错&#xff0c;而且只需要2步就可以完成引入&#xff1a; 第一步&#xff08;有2种方…

微信小程序日历插件用法-举例为(爸妈搜日历)

一、添加插件 在小程序管理后台添加插件。 小程序管理后台地址&#xff1a;https://mp.weixin.qq.com/ 设置>第三方设置>插件管理 添加插件&#xff0c;可以直接搜索名称(爸妈搜日历)或者AppID(wx23a9cef3522e4f7c) 二、在小程序app.json文件中引入插件声明 "plugi…

前端ui组件(1):日程排班—11个优秀JavaScript 日历插件

日历是我们生活中重要的一部分。在当今世界,人们大多使用网络或移动日历。它们随处可见,包括在各种软件中:预订应用、旅行软件、项目管理、管理面板等。 出于多种原因,用户可能需要在网站上使用日历。用户需要容果从日历中选择日期来填写表格,或者在填写某些信息时提供日…

好用的日历插件(三款常用的日历插件)

1、laydate https://www.layui.com/laydate/ 全面重写的 layDate 包含了大量的更新&#xff0c;其中主要以&#xff1a;年选择器、年月选择器、日期选择器、时间选择器、日期时间选择器 五种类型的选择方式为基本核心&#xff0c;并且均支持范围选择&#xff08;即双控件&…

【典例】链表经典题目合集

目录导航 1. 删除链表中给定值为val的所有节点2. 反转一个单链表3. 返回链表中间节点&返回链表倒数第k个节点4. 链表的回文结构5. 合并两个有序链表6. 输入两个链表&#xff0c;找出它们第一个公共节点7. 分割链表8. 判断链表是否带环&找环的入口点9. 复制复杂链表10. …

链表知识点总结

目录 一、基本概念&#xff1a; 1.定义&#xff1a; 2.性质&#xff1a; 3.链表的分类&#xff1a; 单链表&#xff1a; 双向链表 单链表和双向链表的区别&#xff1a; 双向链表的作用&#xff1a; 循环链表 二、链表的主要操作&#xff1a; 1.插入操作&#xff1a; a.重…

二级指针实现单链表的插入、删除及 linux内核源码双向链表之奇技

二级指针实现单链表的插入、删除 今天看了coolshell上关于二级指针删除单链表节点的文章。 文章中Linus 举例&#xff1a; 例如&#xff0c;我见过很多人在删除一个单项链表的时候&#xff0c;维护了一个”prev”表项指针&#xff0c;然后删除当前表项&#xff0c;就像这样…

C++实现链表

C实现链表 众所周知&#xff0c;C/C语言实现的链表是由一个一个的结点构成&#xff0c;每个结点分为数据域和指针域&#xff0c;指针域中存储了其后继结点的地址&#xff0c;通过地址来访问下一个结点。 链表是一系列节点串联形成的数据结构&#xff0c;链表存储有序的元素集合…