使用Jquery实现每日签到功能

基于jquery实现日历签到功能

jquery记事日历插件e-calendar

思路:1、获取当月第一天是周几2、获取当月共几天

通过获取下月的第0天,即是当月最后一天日期3、通过二维数组构造当月日历4、将获取到的日期第一天在日历中展示..

知识点:1、JS获取当月的天数

getDate() 方法可返回月份的某一天,返回值是1 ~ 31之间的一个整数。var d = newDate()

document.write(d.getDate())

输出:17getDay() 方法可返回表示星期的某一天的数字,返回值是0(周日) 到 6(周六) 之间的一个整数。var d=newDate()

document.write(d.getDay())

输出:3

var d = newDate();//d.getMonth()+1代表下个月,月份索引从0开始,即当前月为6月时,getMonth()返回值为5,创建日期时同理

//此处构造的日期为下个月的第0天,天数索引从1开始,第0天即代表上个月的最后一天

var curMonthDays = new Date(d.getFullYear(), (d.getMonth()+1), 0).getDate();

alert("本月共有 "+ curMonthDays +" 天");2、构造当月日历二维数组

Js代码 收藏代码

bulidCal :function(iYear, iMonth) {var aMonth = newArray();

aMonth[0] = new Array(7);

aMonth[1] = new Array(7);

aMonth[2] = new Array(7);

aMonth[3] = new Array(7);

aMonth[4] = new Array(7);

aMonth[5] = new Array(7);

aMonth[6] = new Array(7);var dCalDate = new Date(iYear, iMonth - 1, 1);var iDayOfFirst =dCalDate.getDay();var iDaysInMonth =calUtil.getDaysInmonth(iMonth, iYear);var iVarDate = 1;vard, w;

aMonth[0][0] = "日";

aMonth[0][1] = "一";

aMonth[0][2] = "二";

aMonth[0][3] = "三";

aMonth[0][4] = "四";

aMonth[0][5] = "五";

aMonth[0][6] = "六";for (d = iDayOfFirst; d < 7; d++) {

aMonth[1][d] =iVarDate;

iVarDate++;

}for (w = 2; w < 7; w++) {for (d = 0; d < 7; d++) {if (iVarDate <=iDaysInMonth) {

aMonth[w][d]=iVarDate;

iVarDate++;

}

}

}returnaMonth;

}

获取当月第一天是周几:

Js代码 收藏代码var dCalDate = new Date(iYear, iMonth - 1, 1);var iDayOfFirst =dCalDate.getDay();

获取当月共几天:

Js代码 收藏代码

getDaysInmonth :function(iMonth, iYear){var dPrevDate = new Date(iYear, iMonth, 0);returndPrevDate.getDate();

}3、构造当月日历HTML

Js代码 收藏代码

drawCal :function(iYear, iMonth ,signList) {var myMonth =calUtil.bulidCal(iYear, iMonth);var htmls = newArray();

htmls.push("

");

htmls.push("

");

htmls.push("

下月

");

htmls.push("

上月

");

htmls.push("

htmls.push("

");

htmls.push("

");

htmls.push("

htmls.push("

");

htmls.push("

" + myMonth[0][0] + "");

htmls.push("

" + myMonth[0][1] + "");

htmls.push("

" + myMonth[0][2] + "");

htmls.push("

" + myMonth[0][3] + "");

htmls.push("

" + myMonth[0][4] + "");

htmls.push("

" + myMonth[0][5] + "");

htmls.push("

" + myMonth[0][6] + "");

htmls.push("

");vard, w;for (w = 1; w < 6; w++) {

htmls.push("

");for (d = 0; d < 7; d++) {var ifHasSigned =calUtil.ifHasSigned(signList,myMonth[w][d]);

console.log(ifHasSigned);if(ifHasSigned){

htmls.push("

" + (!isNaN(myMonth[w][d]) ? myMonth[w][d] : " ") + "");

}else{

htmls.push("

" + (!isNaN(myMonth[w][d]) ? myMonth[w][d] : " ") + "");

}

}

htmls.push("

");

}

htmls.push("

");

htmls.push("

");

htmls.push("

");return htmls.join('');

}4、控件的事件处理机制

指定一个默认的eventName:"load",不同的事件定义不同的eventName

默认时:

Js代码 收藏代码

eventName:"load",//初始化日历

init:function(signList){

calUtil.setMonthAndDay();

calUtil.draw(signList);

calUtil.bindEnvent();

},

Java代码 收藏代码

setMonthAndDay:function(){switch(calUtil.eventName)

{case "load":var current = newDate();

calUtil.showYear=current.getFullYear();

calUtil.showMonth=current.getMonth() + 1;break;case "prev":var nowMonth=$(".calendar_month_span").html().split("年")[1].split("月")[0];

calUtil.showMonth=parseInt(nowMonth)-1;if(calUtil.showMonth==0)

{

calUtil.showMonth=12;

calUtil.showYear-=1;

}break;case "next":var nowMonth=$(".calendar_month_span").html().split("年")[1].split("月")[0];

calUtil.showMonth=parseInt(nowMonth)+1;if(calUtil.showMonth==13)

{

calUtil.showMonth=1;

calUtil.showYear+=1;

}break;

}

},

不同的事件触发:

Js代码 收藏代码

bindEnvent:function(){//绑定上个月事件

$(".calendar_month_prev").click(function(){//ajax获取日历json数据

var signList=[{"signDay":"10"},{"signDay":"11"},{"signDay":"12"},{"signDay":"13"}];

calUtil.eventName="prev";

calUtil.init(signList);

});//绑定下个月事件

$(".calendar_month_next").click(function(){//ajax获取日历json数据

var signList=[{"signDay":"10"},{"signDay":"11"},{"signDay":"12"},{"signDay":"13"}];

calUtil.eventName="next";

calUtil.init(signList);

});

}

效果图:

页面引用:

Html代码 收藏代码

签到效果实现

var signList=[{"signDay":"09"},{"signDay":"11"},{"signDay":"12"},{"signDay":"13"}];

calUtil.init(signList);

});

JS:

Js代码 收藏代码var calUtil ={//当前日历显示的年份

showYear:2015,//当前日历显示的月份

showMonth:1,//当前日历显示的天数

showDays:1,

eventName:"load",//初始化日历

init:function(signList){

calUtil.setMonthAndDay();

calUtil.draw(signList);

calUtil.bindEnvent();

},

draw:function(signList){//绑定日历

var str =calUtil.drawCal(calUtil.showYear,calUtil.showMonth,signList);

$("#calendar").html(str);//绑定日历表头

var calendarName=calUtil.showYear+"年"+calUtil.showMonth+"月";

$(".calendar_month_span").html(calendarName);

},//绑定事件

bindEnvent:function(){//绑定上个月事件

$(".calendar_month_prev").click(function(){//ajax获取日历json数据

var signList=[{"signDay":"10"},{"signDay":"11"},{"signDay":"12"},{"signDay":"13"}];

calUtil.eventName="prev";

calUtil.init(signList);

});//绑定下个月事件

$(".calendar_month_next").click(function(){//ajax获取日历json数据

var signList=[{"signDay":"10"},{"signDay":"11"},{"signDay":"12"},{"signDay":"13"}];

calUtil.eventName="next";

calUtil.init(signList);

});

},//获取当前选择的年月

setMonthAndDay:function(){switch(calUtil.eventName)

{case "load":var current = newDate();

calUtil.showYear=current.getFullYear();

calUtil.showMonth=current.getMonth() + 1;break;case "prev":var nowMonth=$(".calendar_month_span").html().split("年")[1].split("月")[0];

calUtil.showMonth=parseInt(nowMonth)-1;if(calUtil.showMonth==0)

{

calUtil.showMonth=12;

calUtil.showYear-=1;

}break;case "next":var nowMonth=$(".calendar_month_span").html().split("年")[1].split("月")[0];

calUtil.showMonth=parseInt(nowMonth)+1;if(calUtil.showMonth==13)

{

calUtil.showMonth=1;

calUtil.showYear+=1;

}break;

}

},

getDaysInmonth :function(iMonth, iYear){var dPrevDate = new Date(iYear, iMonth, 0);returndPrevDate.getDate();

},

bulidCal :function(iYear, iMonth) {var aMonth = newArray();

aMonth[0] = new Array(7);

aMonth[1] = new Array(7);

aMonth[2] = new Array(7);

aMonth[3] = new Array(7);

aMonth[4] = new Array(7);

aMonth[5] = new Array(7);

aMonth[6] = new Array(7);var dCalDate = new Date(iYear, iMonth - 1, 1);var iDayOfFirst =dCalDate.getDay();var iDaysInMonth =calUtil.getDaysInmonth(iMonth, iYear);var iVarDate = 1;vard, w;

aMonth[0][0] = "日";

aMonth[0][1] = "一";

aMonth[0][2] = "二";

aMonth[0][3] = "三";

aMonth[0][4] = "四";

aMonth[0][5] = "五";

aMonth[0][6] = "六";for (d = iDayOfFirst; d < 7; d++) {

aMonth[1][d] =iVarDate;

iVarDate++;

}for (w = 2; w < 7; w++) {for (d = 0; d < 7; d++) {if (iVarDate <=iDaysInMonth) {

aMonth[w][d]=iVarDate;

iVarDate++;

}

}

}returnaMonth;

},

ifHasSigned :function(signList,day){var signed = false;

$.each(signList,function(index,item){if(item.signDay ==day) {

signed= true;return false;

}

});returnsigned ;

},

drawCal :function(iYear, iMonth ,signList) {var myMonth =calUtil.bulidCal(iYear, iMonth);var htmls = newArray();

htmls.push("

");

htmls.push("

");//htmls.push("

下月

");

//htmls.push("

上月

");

htmls.push("

htmls.push("

");

htmls.push("

");

htmls.push("

htmls.push("

");

htmls.push("

" + myMonth[0][0] + "");

htmls.push("

" + myMonth[0][1] + "");

htmls.push("

" + myMonth[0][2] + "");

htmls.push("

" + myMonth[0][3] + "");

htmls.push("

" + myMonth[0][4] + "");

htmls.push("

" + myMonth[0][5] + "");

htmls.push("

" + myMonth[0][6] + "");

htmls.push("

");vard, w;for (w = 1; w < 6; w++) {

htmls.push("

");for (d = 0; d < 7; d++) {var ifHasSigned =calUtil.ifHasSigned(signList,myMonth[w][d]);

console.log(ifHasSigned);if(ifHasSigned){

htmls.push("

" + (!isNaN(myMonth[w][d]) ? myMonth[w][d] : " ") + "");

}else{

htmls.push("

" + (!isNaN(myMonth[w][d]) ? myMonth[w][d] : " ") + "");

}

}

htmls.push("

");

}

htmls.push("

");

htmls.push("

");

htmls.push("

");return htmls.join('');

}

};

java 日历签到功能_基于jquery实现日历签到功能相关推荐

  1. js php 实现日历签到_基于jquery实现日历签到功能_jquery

    在一些任务游戏.贴吧管理中都会有一个签到功能,帮助大家记录登录天数,积累等级经验,这个日历签到功能是如何实现的,本文为大家进行演. 本文实例讲述了基于jquery实现日历签到功能.分享给大家供大家参考 ...

  2. java在线选座功能_基于jquery实现在线选座订座之影院篇

    先给大家展示效果图(支持源码下载哦): 我们在线购票时(如电影票.车票等)可以自己选座.开发者会在页面上列出座次席位,用户可以一目了然的看到可以选择的座位及支付.本文以电影院购票为例,为您展示如何选座 ...

  3. vue展示日历 考勤展示_基于element-ui的日历显示当月考勤情况

    前言:element-ui 日历组件calendar 自定义使用,做一个显示当月考勤情况的功能. 效果图: 准备工作: element-ui的版本最少是2.8.2,由于之前我安装的版本是2.4.2版本 ...

  4. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  5. 基于jQuery的日历+每日签到功能

    公司要开发一个h5页面,里边有一个每日签到抽奖的功能,本以为这样的插件应该会有很多,结果找到的全都是仅生成日历的插件,于是乎就出现了下面这个东西.(前端菜鸟,请大神嘴下留情,也请小伙伴们多提宝贵意见) ...

  6. java抢单功能_基于消息队列的高并发抢单功能实现方法与流程

    本发明涉及嵌入式软件中间件,具体涉及一种基于消息队列的高并发抢单功能实现方法. 背景技术: 中间件是一种独立的系统软件或服务程序,分布式应用系统借助这种软件在不同的技术之间共享资源,管理计算资源和网络 ...

  7. 前端捕捉轨迹_基于JavaScript实现每日签到打卡轨迹功能

    本文实例为大家分享了js实现每日签到打卡轨迹功能的具体代码,供大家参考,具体内容如下 1. 核心文件 calendar.js var calUtil = { //当前日历显示的年份 showYear: ...

  8. java全文检索功能_基于Java的全文检索引擎简介

    Lucene是一个基于Java的全文索引工具包. 基于Java的全文索引引擎Lucene简介:关于作者和Lucene的历史 全文检索的实现:Luene全文索引和数据库索引的比较 中文切分词机制简介:基 ...

  9. 座位选座的java代码_基于jQuery实现在线选座之高铁版

    效果图展示: 除了电影院在线选座,我们还会接触到飞机机舱选座,当然也有汽车票火车票选座的.假如有一天买火车票也提供在线选座,那么今天我来给大家介绍下如何使用jQuery选座插件完成高铁列车座位布置.选 ...

最新文章

  1. converter 迁移xen server 上的虚拟机 到 wmware esxi
  2. Linux系统是否能够联网
  3. MySQL Server has gone away报错原因汇总
  4. MySQL事务隔离级别的实现原理
  5. mysql explain using_[MySQL] explain中的using where和using index
  6. javascript --- 变量提升的理解
  7. codeforces D.MADMAX 动态规划、记忆化搜索
  8. 服务器不稳定 如何让百度重新收录网站,教你如何让百度重新收录首页
  9. 08 友盟项目--拆分日志为五个表---UDTF自定义函数
  10. 入门机器学习(三)--课后作业解析-线性回归(Python实现)
  11. SCRF的简介及防护手段
  12. matplotlib绘图(折线图,直方图,柱状图,饼图,散点图,三维,动图)
  13. Jmeter 面试题
  14. 临时邮箱email网址
  15. 协程问题:Can only use Waiter.switch method from the Hub greenlet
  16. 这个时代,达不到百万级以上的并发量,都不叫高并发!!!
  17. 英语单词记忆 词源法-思维导图 序
  18. 学习JavaScript这一篇就够了
  19. VR基础——PicoVR SDK接入及使用整理
  20. python声音可视化_声音的可视化处理

热门文章

  1. 普华商业集团入选“2020年中国区块链典型企业名录”
  2. java开发之代码设计
  3. 移动网游SDK接入渠道收集
  4. 《黑豹》上映两天票房破3亿,漫威首发全黑阵容能否赢得中国观众
  5. 电脑报2013年第2期
  6. 2W字 详解20道Redis经典面试题(珍藏版)
  7. 特朗普前经济顾问表示支持Facebook的Libra
  8. itunes保留appstore的版本,亲测可用
  9. python 定义list长度_python中list列表的高级函数 python如何统计列表的长度
  10. SWIG教程-封装指令的使用《二》