基于jQuery的日期选择控件

2020-05-22 16:34:24易采站长站整理

但是也有些问题,第一画日历有点慢,第二兼容性不太好IE Only,第三它不是基于jQuery的哈哈。


那还是老规矩,做之前先看下效果


image  image
这下是更酷的Ext风格了。
从上图我们可以看出这个控件其实有两个视图一个日期月视图,还有一个是年月选择视图。
1:还是先从HTML入手
日期控件确定HTML其实还是比较简单,因为明摆着是列表的数据格式,当然主要是采用table了。
两个视图分别用两个Div包裹,控制div的显示隐藏即可以切换视图了。完整的HTMl结构大家可以用IEDeveloper看一下Demo的结构,我自己截了一个图
image 
2:根据HTML和效果图编写CSS
其实因为是Ext风格的,所以直接copy的ext的css和图片。。
CSS也就不分析了,直接上代码。
因为博客园的语法高亮不支持CSS,所以就不贴出来了,给个下载地址吧:
所有用到的图片:


btn-arrow btn-arrow-light cal


3:搞定了CSS之后呢,就开始编写我们javascript了。
上来就是一个完整代码

;(function($) {
var userAgent = window.navigator.userAgent.toLowerCase();
$.browser.msie8 = $.browser.msie && /msie 8.0/i.test(userAgent);
$.browser.msie7 = $.browser.msie && /msie 7.0/i.test(userAgent);
$.browser.msie6 = !$.browser.msie8 && !$.browser.msie7 && $.browser.msie && /msie 6.0/i.test(userAgent);
Date.prototype.Format = function(format) {
var o = {
“M+”: this.getMonth() + 1,
“d+”: this.getDate(),
“h+”: this.getHours(),
“H+”: this.getHours(),
“m+”: this.getMinutes(),
“s+”: this.getSeconds(),
“q+”: Math.floor((this.getMonth() + 3) / 3),
“w”: “0123456”.indexOf(this.getDay()),
“S”: this.getMilliseconds()
};
if (/(y+)/.test(format)) {
format = format.replace(RegExp.$1, (this.getFullYear() + “”).substr(4 – RegExp.$1.length));
}
for (var k in o) {
if (new RegExp(“(” + k + “)”).test(format))