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插件的开发,以前看大神们,对插件都是信手拈来,随便玩弄,感觉自己要是达到那种水平就好了,就开始自己研究插件开发了.研究了一段时间之后,就开始写了自己的第一个日历插件,由于是初学插件开发, ...
随机推荐
- 20145214实验三 敏捷开发与XP实践
20145214实验三 敏捷开发与XP实践 XP准则 沟通 :XP认为项目成员之间的沟通是项目成功的关键,并把沟通看作项目中间协调与合作的主要推动因素. 简单 :XP假定未来不能可靠地预测,在现在考虑 ...
- error : Web 项目“RealEstate.Web”的 URL“http://localhost:20000”已配置为将 IIS 用作 Web 服务器,但是当前在 IIS Express W
error : Web 项目"RealEstate.Web"的 URL"http://localhost:20000"已配置为将 IIS 用作 Web 服务器 ...
- java面试95题
1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: - 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽象只关注对象有哪些属性和行为,并不关注 ...
- BAT批处理(三)
1.set set命令:显示.设置或删除变量.显示变量:set 或 set s 前者显示批处理当前已定义的所有变量及其值,后者显示所有以s开头的变量及值.设置变量:set aa=abcd 此句命令便可 ...
- 【TCP】- TCP协议简介
转载:https://blog.csdn.net/ningdaxing1994/article/details/73076795 TCP 是互联网核心协议之一,本文介绍它的基础知识. 一.TCP 协议 ...
- Jenkins系列-Jenkins介绍与部署
Jenkins是什么? Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台.这是一个免费的源代码,可以处理任何类型的构建或持续集成.集成Jenkins可以用于一些测 ...
- java 读写文件乱码问题
这样写,会出现乱码.原因是文件时gbk格式的, BufferedReader br = new BufferedReader(new FileReader(indir)); BufferedWrite ...
- BZOJ4897 [Thu Summer Camp2016]成绩单 【dp】
题目链接 BZOJ4897 题解 发现我们付出的代价与区间长度无关,而与区间权值范围有关 离散化一下权值 我们设\(f[l][r][x][y]\)表示区间\([l,r]\)消到只剩权值在\([x,y] ...
- React获取组件实例
1. 直接new Component() 组件本身也是class,可以new,这样的组件实例意义不大 componentInstance = new Component(); 2. ReactDOM. ...
- sass的循环for,while,each
1. for @for $i from 1 to 10 { .border-#{$i} { border: #{$i}px solid blue; } } 2. while $i: 6; @while ...