展示:
js 代码:
Zepto.datepicker = function(target){
var datepicker = {
init : function(){
this._target = target;
this._date = new Date();
this._formatDate();
},
bind: function(){
this._picker = (function(){
var arr = [];
arr.push('<div class="datepicker-box">');
arr.push(' <div class="datepicker-header">');
arr.push(' <span class="datepicker-pre"><b></b></span>');
arr.push(' <span class="datepicker-next"><b></b></span>');
arr.push(' <h4></h4>');
arr.push(' </div>');
arr.push(' <table class="datepicker-body">');
arr.push(' <thead>');
arr.push(' <tr>');
arr.push(' <th>一</th><th>二</th><th>三</th><th>四</th><th>五</th><th class="datepicker-weekend">六</th><th class="datepicker-weekend">日</th>');
arr.push(' </tr>');
arr.push(' </thead>');
arr.push(' <tbody>');
arr.push(' </tbody>');
arr.push(' </table>');
arr.push('</div>');
return $(arr.join(''));
})();
this._generateDays();
var p = this;
this._picker.find('span').on('touchstart', function(){
$(this).addClass('hover');
}).on('touchend', function(){
$(this).removeClass('hover');
}).click(function(){
if($(this).hasClass('datepicker-pre')){
p._date.setMonth(p._date.getMonth() - 1);
} else {
p._date.setMonth(p._date.getMonth() + 1);
}
p._generateDays();
});
this._picker.click(function(e){
e.preventDefault();
e.stopPropagation();
});
$(document).click(function(e){
if(e.target != p._picker[0] && e.target != p._target[0]){
p._picker.hide();
}
});
return this;
},
insert : function(){
this._picker.insertAfter(this._target);
},
show : function(){
this._picker.show();
},
hide : function(){
this._picker.hide();
},
_generateDays : function(){
var year = this._date.getFullYear()
, month = this._date.getMonth() + 1
, day = this._date.getDate()
, days = new Date(new Date(year, month, 1) - 24*60*60*1000).getDate()
, week = (function(){
var tDate = new Date(year, month-1, 1);
var week = tDate.getDay();
if(week == 0){
week = 7;
}
return week;
})();
this._picker.find('h4').html(year + ' 年 ' + month + ' 月');
var arr = []
, d = 1;
arr.push('<tr>');
for(var j = 1; j < week; j ++){
arr.push('<td> </td>');
}
for(var j = week; j < 8; j ++, d ++){
arr.push('<td class="datepicker-td');
if(d == day){
arr.push(' cur');
}
if(j >= 6){
arr.push(' datepicker-weekend');
}
arr.push('">');
arr.push(d);
arr.push('</td>');
}
arr.push('</tr>');
for(var i = 0, l = Math.ceil((days + week) / 7) - 2; i < l; i ++){
arr.push('<tr>');
for(var j = 1; j < 8; j ++, d ++){
arr.push('<td class="datepicker-td');
if(d == day){
arr.push(' cur');
}
if(j >= 6){
arr.push(' datepicker-weekend');
}
arr.push('">');
arr.push(d);
arr.push('</td>');
}
arr.push('</tr>');
}
var l = days - d + 1;
if(l != 0){
arr.push('<tr>');
for(var i = 0; i < l; i ++, d ++){
arr.push('<td class="datepicker-td');
if(d == day){
arr.push(' cur');
}
if(i >= 6){
arr.push(' datepicker-weekend');
}
arr.push('">');
arr.push(d);
arr.push('</td>');
}
for(var i = l + 1; i < 8; i ++){
arr.push('<td> </td>');
}
arr.push('</tr>');
}
this._picker.find('tbody')[0].innerHTML = arr.join('');
var p = this;
this._picker.find('.datepicker-td').unbind().on('touchstart', function(){
$(this).addClass('hover');
}).on('touchend', function(){
$(this).removeClass('hover');
}).click(function(){
p._picker.find('.datepicker-td').removeClass('cur');
$(this).addClass('cur');
var day = parseInt($(this).text(), 10);
p._date = new Date(year, month - 1, day);
p.hide();
p._formatDate();
});
},
_formatDate: function(){
var weekDays = ['日', '一', '二', '三', '四', '五', '六'];
this._target.text(this._date.getFullYear() + '年' + (this._date.getMonth() + 1) + '月' + this._date.getDate() + '日(周' + weekDays[this._date.getDay()] + ')');
}
};
datepicker.init();
var initialised = false;
var self = this;
target.click(function(){
if(!initialised){
datepicker.bind().insert();
initialised = true;
}
datepicker.show();
});
};
$.fn.datepicker = function(options){
$.datepicker(this);
};
样式:
.datapicker{background:url(../img/datapicker.gif) no-repeat 230px center #FFF;}
.datepicker-box{position:relative;top:-36px;left:0;margin-bottom:-36px;border:1px solid #d9d9d9;}
.datepicker-header{background:#F8F8F8;border-bottom:1px solid #EEE;}
.datepicker-header span{text-align:center;padding:12px 15px 10px;}
.datepicker-header span.hover{background:#EEE;}
.datepicker-header span b{display:block;width:0;height:0;font-size:0;border:8px solid #F8F8F8;}
.datepicker-pre{float:left;}
.datepicker-next{float:right;}
.datepicker-header span.datepicker-pre b{border-left:0;border-right:8px solid #444;}
.datepicker-header span.datepicker-next b{border-right:0;border-left:8px solid #444;}
.datepicker-header h4{padding:10px 0;height:20px;line-height:20px;text-align:center;font-size:16px;font-weight:normal;}
.datepicker-body{width:100%;border:0;border-collapse:collapse;border-spacing:0;}
.datepicker-body th, .datepicker-body td{height:20px;line-height:20px;text-align:center;font-size:14px;}
.datepicker-body th.datepicker-weekend, .datepicker-body td.datepicker-weekend{color:#FF0000;}
.datepicker-body th{padding:6px 0;font-weight:normal;color:#333;}
.datepicker-body td{padding:4px 0;}
.datepicker-body td.cur{background:#DDD;border:1px solid #CCC;color:#FFF;}
分享到:
相关推荐
其次,我们关注的是一个日历插件,它基于Zepto.js库。最后,我们有一个名为"dataPicker-master"的压缩包子文件,这可能是一个项目源代码的主目录。 **HTML5**: HTML5是超文本标记语言的最新版本,为Web开发者提供了...
"基于zepto的mobiscroll版时间 日期 下拉 省市区级联"是一个针对移动设备优化的解决方案,它提供了高效且用户友好的时间、日期选择以及省市区级联下拉功能。这个解决方案主要利用了Zepto.js库和Mobiscroll插件,两者...
6. `jquery-weui.min.js`:WeUI的JavaScript插件库,封装了与WeUI组件相关的JavaScript功能,包括我们关注的时间选择控件。 综合以上信息,我们可以推测这个时间控件的实现方式可能包括: - 使用HTML元素(如`...
"7天日历左右切换--zepto"是一个基于Zepto.js库实现的特定日历组件,它专注于展示并切换近一周(7天)的日期。下面我们将详细探讨这个组件的相关知识点。 1. **Zepto.js**: Zepto.js 是一个轻量级的JavaScript库...
【基于zepto的移动端轻量级日期插件–date_picker】是专为移动Web开发设计的日期选择解决方案,旨在解决现有插件过于依赖大型库、功能复杂度高、不适合移动端性能优化的问题。这款插件的核心目标是保持轻量化、低...
它处理DOM操作、事件处理、动画效果和Ajax请求等方面,同时还拥有大量的插件生态系统,如LightBox、日期插件和图表插件等。 2. **Dojo Toolkit** - Dojo是一个强大的JavaScript框架,由Core、Dijit和DojoX三个主要...
倒计时插件的实现原理通常是基于JavaScript的Date对象,通过计算目标日期与当前日期的时间差来更新显示。它可能包含以下关键组件和功能: 1. **初始化设置**:开发者可以通过参数配置倒计时的结束时间、时间格式、...
9. **jQuery UI**:jQuery UI是基于jQuery的用户界面库,提供了一套完整的可交互的组件,如日期选择器、拖放功能、对话框等,增强了网页的交互性。 这些框架和插件在实际开发中各有所长,可以根据项目需求灵活选择...
4. **layDate**:layDate是一款功能齐全的JavaScript日期时间插件,适用于Web和移动端。它提供了多种日期时间选择样式,包括日历、时间轴、年月选择等,同时支持自定义格式化和国际化,使得日期时间输入更加友好和...
然而,随着现代浏览器的发展,考虑使用原生JavaScript或轻量级库(如zepto.js)可能是更优的选择,特别是在移动设备上。 ### 10. 结合其他库和框架 jQuery可与其他库(如Lodash)或现代框架(如React, Angular, ...
在Web开发领域,插件是不可或缺的工具,它们极大地扩展了浏览器和JavaScript库的功能,提升了开发效率和用户体验。本文将详细介绍这些"web常用插件",包括AngularJS、RequireJS、H-UI、jQuery、Zepto、jQuery UI以及...
cxCalendar 是基于 jQuery 的日期选择器插件,支持日期、时间、月份、年份等多种类型。 它灵活自由,你可以自定义外观,日期的范围,返回的格式等。 同时兼容 Zepto,方便在移动端使用。 若从 1.x 版本升级迁移,请...
- **简介**:轻量级的时间日期处理库,API设计与 Moment.js 类似。 - **应用场景**:适用于需要频繁处理日期时间的项目。 - **关键特性**:体积小,仅2KB;易于上手,文档齐全。 5. **big.js**: - **简介**:...
jQuery的生态系统丰富,有许多第三方插件可供使用,如Bootstrap、jQuery UI等,它们扩展了jQuery的功能,如弹出框、日期选择器、轮播图等。开发者也可以根据需求编写自己的插件。 ### 8. 兼容性和性能优化 虽然...
4. **JavaScript教程**:JavaScript是一种解释型的、基于原型的脚本语言,常用于网页和网络应用开发。学习JavaScript包括了解基本语法、数据类型、函数声明、对象创建和继承,以及DOM(文档对象模型)操作和Cookie的...