现在的要求是日历中要区分已打卡和未打卡的显示,并且当月只显示当月的日历状态,其他月份不显示状态,并且打卡的日期不能大于当日

实现代码(精确到天):

HTML:

<div class="card">
<div class="card-content">
<div class="card-content-inner calendar-card-content">
<div class="calendar-page-content page-content">
<div class="content-block">
<div style="padding:0; margin-right:-15px; width:auto" class="content-block-inner">
<div id="calendar-inline-container"></div>
</div>
</div>
</div>
</div>
</div>
</div>

CSS:

.day-n>span {
background-color:#ff0000 !important;
color:#fff !important;
}
.day-y>span {
background-color:#5aadff !important;
color:#fff !important;
}

JS:

//工时日历月份变量
var _monthNames = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'];
var _calendarInline;//日历DOM变量
//日历初始化
function workCalendarPage_init() {
var array = GetStateByDate();
_calendarInline = myApp.calendar({
container: '#calendar-inline-container',
monthNames: _monthNames,
//dayNamesShort: dayNamesShort,
value: [new Date()],
weekHeader: true,
rangesClasses: [
//指定某段日期范围可以做一些操作,比如10-1~10-7是国庆可以指定这段日期为一个颜色
],
disabled: {
//当前时间以前的可点击,当前时间以后的不可点击
from: new Date()
},
toolbarTemplate:
'<div class="toolbar calendar-custom-toolbar">' +
'<div class="toolbar-inner">' +
'<div class="left">' +
'<a href="#" class="link icon-only"><i class="icon icon-back"></i></a>' +
'</div>' +
'<div class="center"></div>' +
'<div class="right">' +
'<a href="#" class="link icon-only"><i class="icon icon-forward"></i></a>' +
'</div>' +
'</div>' +
'</div>',
//日历控件初次加载时调用
onOpen: function (p) {
$$('.calendar-custom-toolbar .center').text(monthNames[p.currentMonth] + ', ' + p.currentYear);
$$('.calendar-custom-toolbar .left .link').on('click', function () {
_calendarInline.prevMonth();
});
$$('.calendar-custom-toolbar .right .link').on('click', function () {
_calendarInline.nextMonth();
});
SetCalendarValue(p, array);
},
//月份改变时调用
onMonthYearChangeStart: function (p) {
$$('.calendar-custom-toolbar .center').text(monthNames[p.currentMonth] + ', ' + p.currentYear);
SetCalendarValue(p, array);
}
// ,
//onDayClick: function (p, dayContainer, year, month, day) {
// checkData = calendarInline.value;
//这样的写法会遇见一个问题就是第一次加载页面的时候当前日期的点击事件不可以使用,需要点击别的日期后再点击当前日期才可以,所以注销这个方法,自己写一个方法
//}
}); //日历某天的点击事件
$(document).on("click", ".picker-calendar-day", function () {
GoToWorkEntry(this);
});
} //跳转工作录入界面
function GoToWorkEntry(dom) {
if (!$(dom).hasClass('picker-calendar-day-disabled')) {
loadPage('/WorkTimeManagement/WorkEntry');
}
} //获取日期和状态
function GetStateByDate() {
var array = [
{ state: 'y', date: '2018-10-01' },
{ state: 'y', date: '2018-10-03' },
{ state: 'y', date: '2018-10-29' },
{ state: 'y', date: '2018-10-30' },
{ state: 'n', date: '2018-09-29' },
{ state: 'y', date: '2018-09-05' },
{ state: 'n', date: '2018-11-01' },
{ state: 'y', date: '2018-11-02' },
{ state: 'n', date: '2018-11-03' },
];
return array;
} //根据返回值设置日历的值
function SetCalendarValue(p, array) {
$('.picker-calendar-day').removeClass('day-n');
$('.picker-calendar-day').removeClass('day-y'); $.each(array, function (index, value) {
//循环数据库得到的数据对每个数据进行处理
var curData = new Date(value.date);
var curYear = curData.getFullYear();
var curMonth = curData.getMonth() + 1;
if ((p.currentMonth + 1) == curMonth && p.currentYear == curYear) {
var curDay = curData.getDate();
var dom = $('.picker-calendar-day').filter(function (index, value) {
//筛选当天的数据,根据数据的状态进行当天数据CSS的添加
var year = $$(value).attr('data-year');
var month = parseInt($$(value).attr('data-month'), 10) + 1;
var day = $$(value).attr('data-day');
//年月日相等,就确定是当天
if (year == curYear && month == curMonth && day == curDay) {
return $(value);
}
});
if (value.state == 'y') {
dom.addClass('day-y');
} else if (value.state == 'n') {
dom.addClass('day-n');
}
}
}); }

framework7对日历的一些效果处理的更多相关文章

  1. (二)cordova+framework7入门——笑笑APP

    [前言] framework7确实做的很赞,但是一直各种原因没有做什么app, 这个感觉就像大厨遇到百年难见的好材料,不炒个菜憋的慌, 机缘巧合周一周二两个晚上做了一个简单app,先看下效果: ios ...

  2. CSS3制作日历

    目标是制作如下面DEMO显示的一个日历效果: HTML Markup 先来看看其结构: <div class="calendar"> <span class=&q ...

  3. JavaScript里的Date 对象属性及对象方法--实现简单的日历

    上网搜索"js 日历插件"就会出来各种效果的功能丰富的日历插件,很多都可以下载源码,然后根据各自的需求对源码进行修改就可以直接用了. 但今天讲的不是如何使用这些插件,而是讲如何实现 ...

  4. 基于Vue的简单日历组件

    日历组件 由于移动端项目中需要用到日历组件,网上找了下,没看到几个合适的,就尝试着自己写一个.然后发现也不是很复杂,目前只做了最基本的功能,大家也可以拿去做做二次开发. 如何写一个日历组件 基础效果如 ...

  5. 12款优秀的 JavaScript 日历和时间选择控件

    这些插件能够帮助  Web 开发人员更快速的实现各种精美的日历和时间选择效果. 1. The Coolest Calendar 界面非常漂亮的一款日期选择插件,有详细的使用文档,最新版本 1.5. 点 ...

  6. Jquery日历编写小练习

    日历练习 总体效果展示: 代码展示: 源代码部分 <body> <!-- 日历--> <div class="div_sty"> <tab ...

  7. UIView详解

    MVC架构模式   MVC(Model-View-Controller)是实现数据和显示数据的视图分离的架构模式(有一定规模的应用都应该实现数据和显示的分离).其中,M代表模型,就是程序中使用的数据和 ...

  8. easyui1.3.2中使用1.3.6或1.4.x的calendar

    首先在1.3.2中calendar控件不支持日历某天的颜色进行改变,和自定义回调函数 Name Type Description Default width number The width of c ...

  9. Android Design Support Library: 学习CoordinatorLayout

    简述 CoordinatorLayout字面意思是"协调器布局",它是Design Support Library中提供的一个超级帧布局,帮助我们实现Material Design ...

随机推荐

  1. day21 pickle json shelve configpaser 模块

    1. 序列化:我们在网络传输的时候,需要我们对对象进行处理,把对象处理成方便存储和传输的格式,这个过程就叫序列化 序列化的方法不一定一样,三十目的都是为了方便储存和传输. 在python中有三种序列化 ...

  2. 一些自己编写的简单的js

    图片在窗口内弹来弹去的效果 <div class="FrontAdv_float01-default" style="position: absolute;z-in ...

  3. MySQL三大范式和反范式

    1. 第一范式确保数据表中每列(字段)的原子性.如果数据表中每个字段都是不可再分的最小数据单元,则满足第一范式.例如:user用户表,包含字段id,username,password 2. 第二范式在 ...

  4. wget访问tomcat管理界面

    tomcat已经部署了管理界面,通过如下命令,将tomcat的状态信息打印到status.xml文件中,对于不方便使用浏览器访问该页面的情况,还是很有用的. wget http://localhost ...

  5. 使用Myeclipse导入IDEA项目

    问题描述:使用Myeclipse导入IDEA创建的Web项目,成功导入,但是显示的是一个普通的JAVA项目,无法加载到tomcat下. 解决方案:右键项目Properties,选择Myeclipse- ...

  6. PlayMaker 状态机FSM重用

    注意:playmaker做模板的时候不应该有拖入的东西,这样保存模版后会报错,提示容易丢失东西.

  7. Linux的page cache使用情况/命中率查看和操控

    转载自宋宝华:https://blog.csdn.net/21cnbao/article/details/80458173 这里总结几个Linux文件缓存(page cache)使用情况.命中率查看的 ...

  8. Horizon

    python manage.py compress python manage.py collectstatic {% extends "horizon/common/_modal_form ...

  9. (转)shell实例浅谈之产生随机数七种方法

    一.问题 Shell下有时需要使用随机数,在此总结产生随机数的方法.计算机产生的的只是“伪随机数”,不会产生绝对的随机数(是一种理想随机数).伪随机数在大量重现时也并不一定保持唯一,但一个好的伪随机产 ...

  10. node+mongoDB+express项目需求解释

    1. morgon模块 --- morgon 用于打印日志,分别为向后台打印和向文件中打印两种情况.stackoverflow. 2. app.use(bodyParser.json()) 3. de ...