jQuery简单日历插件版

先来看demo:http://codepen.io/jonechen/pen/xOgZMz

插件代码:

;
(function($) {
	var Calendar = function(ele, options) {
		this.ele = ele;
		this.opt = options;
		this.defaults = {
			color: ‘blue‘,
			fontsize: ‘14px‘,
		}
		this.obj = $.extend({}, this.defaults, this.opt);
	};
	Calendar.prototype = {
		init: function() {
			return this.ele.on("focus", function() {
				createEle($(this))
			});
		}
	};
	var currentDate = new Date();
	var currentYear = currentDate.getFullYear();
	var currentMonth = currentDate.getMonth();

	function createEle(ele) {
		var $parent = ele.parent();
		if (!$parent || $parent[0].tagName == "BODY") {
			throw "Error: this parent() is not defined";
			return
		} else {
			ele.css("border", "1px solid red");
			$parent.css({
				padding: 0,
				margin: 0,
				position: ‘relative‘,
			});
			if ($("#week").length == 0) {
				$parent.append("<div id=‘week‘><h1><span class=\‘prev\‘><</span><span class=\‘content\‘>1</span><span class=\‘next\‘>></span></h1></div>");
				$parent.find("#week").css({
					position: "absolute",
					left: 0,
					top: ele.outerHeight(true),
					zIndex: 1000,
					background: "#fff"
				})
				weeklist($parent.find("h1"));
				var $week = ele.next();
				updateDate(currentMonth, $week); //传参数月份
				$week.find(".prev").click(function() {
					updateDate(--currentMonth, $week);
				});
				$week.find(".next").click(function() {
					updateDate(++currentMonth, $week);
				});
			}
		}
	}

	function weeklist(ele) {
		if (ele.parents($("#week")).find("ul:eq(0)").length == 0) {
			ele.after(‘<ul></ul>‘);
			var weekText = [‘日‘, ‘一‘, ‘二‘, ‘三‘, ‘四‘, ‘五‘, ‘六‘];
			for (var i = 0; i < 7; i++) {
				ele.next().append(‘<li>‘ + weekText[i] + ‘</li>‘)
			}
			ele.next().after(‘<ul class=\‘calendarList\‘></ul>‘);
		}
	}

	function updateDate(m, obj) {
		var activeDate = new Date(currentYear, m, 1); //外面传进来的不断变化的日期对象
		var year = activeDate.getFullYear();
		var month = activeDate.getMonth();
		obj.find(".content").html(year + ‘年‘ + (month + 1) + ‘月‘);
		var $calendarList = obj.find($(".calendarList"));
		$calendarList.html("")
		var n = 1 - activeDate.getDay();
		if (n == 1) {
			n = -6;
		}
		activeDate.setDate(n);
		for (var i = 0; i < 42; i++) {
			var date = activeDate.getDate();
			$calendarList.append(‘<li>‘ + date + ‘</li>‘);
			var $li = $calendarList.find("li");
			if (activeDate.getMonth() != month) {
				$li.eq(i).css("color", "#ccc");
			}
			$li.eq(i).attr(‘data-time‘, year + "-" + (activeDate.getMonth() + 1) + "-" + date);
			$li.eq(i).click(function(event) {
				obj.prev().val($(this).attr(‘data-time‘));
				obj.prev().css(‘borderColor‘, ‘#ccc‘)
				obj.remove();
			});
			activeDate.setDate(date + 1);
		}
	}
	$.fn.calendar = function(options) {
		var calendares = new Calendar(this, options);
		return calendares.init();
	}
})(jQuery)

插件调用:

$("#ele").calendar();
时间: 2024-10-14 06:22:40

jQuery简单日历插件版的相关文章

基于jQuery的日历插件

上个星期看到同事做一个有关日历提醒功能的需求,为了找个插件也是费了不少心思,然后刚好有时间就试着写了一个简单demo 来看下最终效果图吧: 是长得丑了一点,不要吐槽我-.- 首先来说说这个日历主要的制作逻辑吧: ·一个月份最多有31天,需要一个7X6的表格去装载 ·如果知道了某个月份1号是星期几,这个月份有多少天,一个循环就可以显示某个月的日历了吧(眼睛都放光了*.*) ·加上一些控件让用户可以方便操作吧(比如可以输入年份.月份,可以点击选择年份.月份) 新建一个html文件,html结构: <

简单日历插件jquery.date_input.pack

html: <link rel="stylesheet" type="text/css" href="css/jquery.date_input.pack.css"> ...... <script type="text/javascript" src="js/jquery.date_input.pack.js"></script> ...... <script ty

jquery 简单分页插件jQuerypage

昨天项目手机端要用到table的分页,考虑到手机端界面小,系统数据不多,在没考虑大批量数据处理的前提前就下载了这个插件,简单. 展示数据datas为json格式. <!DOCTYPE html> <html lang="ch"> <head> <meta charset="UTF-8"> <title>Title</title> <link href="page.css"

jQuery简单倒计时插件

1. 按照特定的类结构布局. 2. 需要先引入jQuery,再引入此文件. /** * 简单倒计时 * * 支持页面内同时存在多个计时器并且不互相干扰 * * Usage: * * <div class="timer-simple-seconds" timer="3600"> * <span class="hour">hour</span>小时<span class="minute"&

jquery简单切换插件

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <title>Examples</title> <meta name="description" conte

Jquery日历插件e-calendar升级版

jQuery事件日历插件e-calendar,支持针对指定日期自定义日程安排(无条数限制),设置过日程的日期会高亮显示,兼容IE7+主流浏览器. 原版使用方法及演示地址:e-calendar原版 (鼠标移动到天显示当天的日程安排) 升级版介绍: 1.同一天可存在多个事件交集2.点击天在日历下方出现日程列表3.点击日程列表可添加其事件 .4.添加item-grid的显示和隐藏5.Events中数组集合可添加id,type等元素(区分日程类型:任务类型或日程类型) 6.增加年份选择,月份选择7.样式

jQuery简单备忘录功能的日历插件

e-calendar是一款jQuery简单带备忘录功能的日历插件.通过该jQuery日历插件你可以记录或设置某天某个时刻发生的事情,具有工作备忘录的功能.通过简单的参数设置你就可以定制该日历插件的外观. 效果演示:http://www.htmleaf.com/Demo/201503281589.html 下载地址:http://www.htmleaf.com/jQuery/Calendar-Date-Time-picker/201503281588.html

jQuery插件之——简单日历

最近在研究js插件的开发,以前看大神们,对插件都是信手拈来,随便玩弄,感觉自己要是达到那种水平就好了,就开始自己研究插件开发了.研究了一段时间之后,就开始写了自己的第一个日历插件,由于是初学插件开发,代码的可读性可能有点差,希望各位大神可以多提点意见,以后维护代码,让这个插件更加的完整.下面就贴出代码. 首先,给插件来个整体的div容器 <div class="y-total"></div> 本人习惯给容器取class或id名时,加上自己独特的前缀,这样,有助于

【UI插件】简单的日历插件(下)—— 学习MVC思想

前言 我们上次写了一个简单的日历插件,但是只是一个半成品,而且做完后发现一些问题,于是我们今天尝试来解决这些问题 PS:距离上次貌似很久了 上次,我们大概遇到哪些问题呢: ① 既然想做一套UI库,那么就应该考虑其它UI库的接入问题 这个意思就是,我们的系统中所有UI插件应该有一些统一行为,我们如果希望统一为所有的插件加一点什么东西,需要有位置可加 这个意味着,可能我们所有的插件需要继承至一个抽象的UI类,并且该类提供了通用的几个事件点 ② 上次做的日历插件虽然说是简单,其耦合还是比较严重的(其实