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();
jQuery简单日历插件版的更多相关文章
- 一款简洁大气的jquery日期日历插件
本jquery插件名为manhuaDate,暂时只支持jquery 1.9.0以下版本,比如jquery-1.8.3.min.js 查看效果网址:http://keleyi.com/a/bjad/em ...
- 【UI插件】开发一个简单日历插件(上)
前言 最近开始整理我们的单页应用框架了,虽然可能比不上MVVM模式的开发效率,也可能没有Backbone框架模块清晰,但是好歹也是自己开发出来 而且也用于了这么多频道的东西,如果没有总结,没有整理,没 ...
- 基于jQuery的日历插件
上个星期看到同事做一个有关日历提醒功能的需求,为了找个插件也是费了不少心思,然后刚好有时间就试着写了一个简单demo 来看下最终效果图吧: 是长得丑了一点,不要吐槽我-.- 首先来说说这个日历主要的制 ...
- 简单日历插件jquery.date_input.pack
html: <link rel="stylesheet" type="text/css" href="css/jquery.date_input ...
- jQuery简单倒计时插件
一. 效果预览 二. 实现 1. 按照特定的类结构布局. 2. 需要先引入jQuery,再引入此文件. /** * Author: CC11001100 * * 简单倒计时 * * 1. 支持页面内同 ...
- jquery简单的插件
$(function() { $.fn.插件名称 = function(options) { var defaults = { Event : "click", //触发响应事件 ...
- jquery简单切换插件
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...
- jquery dataTimePicker日历插件(精确到小时)
效果图: 下载地址:https://github.com/WangChangyao/jquery-dataTimePicker.git <!DOCTYPE html> <h ...
- jQuery插件之——简单日历
最近在研究js插件的开发,以前看大神们,对插件都是信手拈来,随便玩弄,感觉自己要是达到那种水平就好了,就开始自己研究插件开发了.研究了一段时间之后,就开始写了自己的第一个日历插件,由于是初学插件开发, ...
随机推荐
- iOS- 网络请求的两种常用方式【GET & POST】的区别
GET和POST 网络请求的两种常用方式的实现[GET & POST] –GET的语义是获取指定URL上的资源 –将数据按照variable=value的形式,添加到action所指向的URL ...
- 如何进行Linux Kernel 开发
转自:http://www.cppblog.com/flyonok/archive/2011/04/15/144316.html 如何进行Linux Kernel 开发? (Take 3) 译者序:这 ...
- IIS部署网部常用问题汇总
1.unrecognized attribute 'targetframework' A: 需要注册.net framework到iis.步骤如下: (1)'Start' -> 'CMD' (2 ...
- Python2爬虫获取的数据存储到MySQL中时报错"Incorrect string value: '\\xE6\\x96\\xB0\\xE9\\x97\\xBB' for column 'new' at row 1"的解决办法
由于一直使用python3进行编码,在使用Python2时,将爬虫数据连接数据库进行存储时,出现如上的报错,经查资料 是数据库编码问题. 如下转自:http://www.cnblogs.com/liu ...
- [C/C++] const用法详解
const在C语言中算是一个比较新的描述符,我们称之为常量修饰符,意即其所修饰的对象为常量(immutable). 我们来分情况看语法上它该如何被使用. 1.函数体内修饰局部变量.例:void fun ...
- [剑指Offer] 46.孩子们的游戏
题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他随机指 ...
- BZOJ 1452 Count(二维树状数组)
大水题. 建立100个二维树状数组,总复杂度就是O(qlognlogm). # include <cstdio> # include <cstring> # include & ...
- [洛谷P3833][SHOI2012]魔法树
题目大意:给一棵树,路径加,子树求和 题解:树剖 卡点:无 C++ Code: #include <cstdio> #include <iostream> #define ma ...
- POJ2945:Find the Clones——题解
http://poj.org/problem?id=2945 还是trie树……对于结束标记累加并且开个数组记录一下即可. #include<cstdio> #include<cst ...
- 【贪心】【P2117】小Z的矩阵
传送门 Description 小Z最近迷上了矩阵,他定义了一个对于一种特殊矩阵的特征函数G.对于N*N的矩阵A,A的所有元素均为0或1, 当然询问一个矩阵的G值实在是太简单了.小Z在给出一个N*N矩 ...