calendar.js插件使用



jQuery日历插件编写(jquery.calendar.js):

目前比较难解决的问题是:

1、皮肤问题,虽然可以自定义皮肤,但是使用起来还是有一定的困难。

样式预览:

默认皮肤1:

calendar.js插件使用_第1张图片

自定义皮肤2:(深蓝)

calendar.js插件使用_第2张图片

自定义皮肤3:(大红)

calendar.js插件使用_第3张图片

自定义皮肤4:炫酷黑

calendar.js插件使用_第4张图片

调用:

[javascript] view plain copy print ?
  1. $(".startTime").showCalendar({  
  2.         bgColor:"#000000",  
  3.         topColor:"#000000",  
  4.         weekBgColor:"#000000",  
  5.         weekFontColor:"#FFFFFF",  
  6.         innerBorder:"1px solid #FFFFFF",  
  7.         ymFontColor:'#FFFFFF',  
  8.         ymBgColor:'#000000',  
  9.         ymHoverBgColor:'#00CCCC',  
  10.         arrowColor:"#FFFFFF",  
  11.         noThisMonthFontColor:'#9F9F9F',  
  12.         thisMonthFontColor:'#FFFFFF',  
  13.         thisMonthBgColor:'#000000',  
  14.         dateHoverFontColor:'#FFFFFF',  
  15.         dateHoverBgColor:'#00CCCC',  
  16.         tableBorder:'1px solid #FFFFFF',  
  17.         btnBorder:'0',  
  18.         btnBgColor:'#000000',  
  19.         btnFontColor:'#FFFFFF',  
  20.         btnHoverBgColor:'#00CCCC',  
  21.         btnHoverFontColor:'#FFFFFF'  
  22.     });  
$(".startTime").showCalendar({
		bgColor:"#000000",
		topColor:"#000000",
		weekBgColor:"#000000",
		weekFontColor:"#FFFFFF",
	    innerBorder:"1px solid #FFFFFF",
		ymFontColor:'#FFFFFF',
		ymBgColor:'#000000',
		ymHoverBgColor:'#00CCCC',
		arrowColor:"#FFFFFF",
		noThisMonthFontColor:'#9F9F9F',
		thisMonthFontColor:'#FFFFFF',
		thisMonthBgColor:'#000000',
		dateHoverFontColor:'#FFFFFF',
		dateHoverBgColor:'#00CCCC',
		tableBorder:'1px solid #FFFFFF',
		btnBorder:'0',
		btnBgColor:'#000000',
		btnFontColor:'#FFFFFF',
		btnHoverBgColor:'#00CCCC',
		btnHoverFontColor:'#FFFFFF'
	});

参数:

[javascript] view plain copy print ?
  1. var defaultOptions = {  
  2.         //class名称  
  3.         className:'strongCalendar',  
  4.         //日历格式'yyyy-MM-dd'('yyyy-MM-dd','yyyy年MM月dd日')  
  5.         format:'yyyy-MM-dd',  
  6.         //高度,默认220px  
  7.         height:220,  
  8.         //宽度:默认与文本框宽度相同  
  9.         width:$(this).innerWidth(),  
  10.         //日历框离文本框高度  
  11.         marginTop:1,  
  12.         //浮层z-index  
  13.         zIndex:99,  
  14.         //间隙距离,默认为5px  
  15.         spaceWidth:8,  
  16.         //字体大小,默认9pt  
  17.         fontSize:9,  
  18.         //日历背景色  
  19.         bgColor:'#FFFFFF',  
  20.         //默认浅灰色  
  21.         borderColor:"#AFAFAF",  
  22.         //顶部背景颜色,默认为淡灰色  
  23.         topColor:'#FFFFFF',  
  24.         //当前年月字体颜色  
  25.         ymFontColor:'#535353',  
  26.         //年月份操作背景色  
  27.         ymBgColor:'#FFFFFF',  
  28.         //年月份移上背景色  
  29.         ymHoverBgColor:'#EFEFEF',  
  30.         //箭头颜色  
  31.         arrowColor:'#535353',  
  32.         //里层边框  
  33.         innerBorder:'1px solid #AFAFAF',  
  34.         //表格边框  
  35.         tableBorder:'0px solid #AFAFAF',  
  36.         //星期背景颜色  
  37.         weekBgColor:'#EFEFEF',  
  38.         //星期字体颜色  
  39.         weekFontColor:'#535353',  
  40.         //上个月和下个月日期的字体颜色  
  41.         noThisMonthFontColor:'#CFCFCF',  
  42.         //这个月的日期字体颜色  
  43.         thisMonthFontColor:'#535353',  
  44.         //这个的日期背景颜色  
  45.         thisMonthBgColor:'#FFFFFF',  
  46.         //日期移上时字体颜色  
  47.         dateHoverFontColor:'#3399CC',  
  48.         //日期移上时字体颜色  
  49.         dateHoverBgColor:'#EFEFEF',  
  50.         //button边框  
  51.         btnBorder:'1px solid #AFAFAF',  
  52.         //button背景色  
  53.         btnBgColor:'#FFFFFF',  
  54.         //button字体颜色  
  55.         btnFontColor:'#535353',  
  56.         //button鼠标移上颜色  
  57.         btnHoverBgColor:'#EFEFEF',  
  58.         //button鼠标移上字体颜色  
  59.         btnHoverFontColor:'#3399CC'  
  60.     };  
var defaultOptions = {
		//class名称
		className:'strongCalendar',
		//日历格式'yyyy-MM-dd'('yyyy-MM-dd','yyyy年MM月dd日')
		format:'yyyy-MM-dd',
		//高度,默认220px
		height:220,
		//宽度:默认与文本框宽度相同
		width:$(this).innerWidth(),
		//日历框离文本框高度
		marginTop:1,
		//浮层z-index
		zIndex:99,
		//间隙距离,默认为5px
		spaceWidth:8,
		//字体大小,默认9pt
		fontSize:9,
		//日历背景色
		bgColor:'#FFFFFF',
		//默认浅灰色
		borderColor:"#AFAFAF",
		//顶部背景颜色,默认为淡灰色
		topColor:'#FFFFFF',
		//当前年月字体颜色
		ymFontColor:'#535353',
		//年月份操作背景色
		ymBgColor:'#FFFFFF',
		//年月份移上背景色
		ymHoverBgColor:'#EFEFEF',
		//箭头颜色
		arrowColor:'#535353',
		//里层边框
		innerBorder:'1px solid #AFAFAF',
		//表格边框
		tableBorder:'0px solid #AFAFAF',
		//星期背景颜色
		weekBgColor:'#EFEFEF',
		//星期字体颜色
		weekFontColor:'#535353',
		//上个月和下个月日期的字体颜色
		noThisMonthFontColor:'#CFCFCF',
		//这个月的日期字体颜色
		thisMonthFontColor:'#535353',
		//这个的日期背景颜色
		thisMonthBgColor:'#FFFFFF',
		//日期移上时字体颜色
		dateHoverFontColor:'#3399CC',
		//日期移上时字体颜色
		dateHoverBgColor:'#EFEFEF',
		//button边框
		btnBorder:'1px solid #AFAFAF',
		//button背景色
		btnBgColor:'#FFFFFF',
		//button字体颜色
		btnFontColor:'#535353',
		//button鼠标移上颜色
		btnHoverBgColor:'#EFEFEF',
		//button鼠标移上字体颜色
		btnHoverFontColor:'#3399CC'
	};

测试代码:

[javascript] view plain copy print ?
  1. "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. "http://www.w3.org/1999/xhtml">  
  3.   
  4. "Content-Type" content="text/html; charset=gb2312" />  
  5. 无标题文档  
  6. "text/javascript" src="jquery-1.9.1.js">  
  7. "text/javascript" src="jquery.calendar.js">  
  8. "text/css">  
  9.     *{margin:0;padding:0;font-family:微软雅黑}  
  10.     input{margin-top:20px;margin-left:20px;border:1px solid #AFAFAF;  
  11.     line-height:25px;font-size:10pt;width:200px;height:30px; border-color:#535353}  
  12.   
  13.   
  14.   
  15.   
  16.     "text" readonly="readonly" class="startTime"/>  
  17.     "text" readonly="readonly" class="endTime" />  
  18.     "text" readonly="readonly" class="testTime" />  
  19.   
  20. "text/javascript">  
  21.       
  22.     //默认皮肤  
  23.     $(".startTime").showCalendar();  
  24.       
  25.     //自定义深蓝皮肤  
  26.     $(".endTime").showCalendar({  
  27.         className:'endDate_',  
  28.         bgColor:"#3399CC",  
  29.         topColor:"#3399CC",  
  30.         weekBgColor:"#3399CC",  
  31.         weekFontColor:"#FFFFFF",  
  32.         innerBorder:"0",  
  33.         ymFontColor:'#FFFFFF',  
  34.         ymBgColor:'#33AADD',  
  35.         ymHoverBgColor:'#00CCCC',  
  36.         arrowColor:"#FFFFFF",  
  37.         noThisMonthFontColor:'#BFBFBF',  
  38.         thisMonthFontColor:'#FFFFFF',  
  39.         thisMonthBgColor:'#3399CC',  
  40.         dateHoverFontColor:'#FFFFFF',  
  41.         dateHoverBgColor:'#00CCCC',  
  42.         btnBorder:'0',  
  43.         btnBgColor:'#3399CC',  
  44.         btnFontColor:'#FFFFFF',  
  45.         btnHoverBgColor:'#00CCCC',  
  46.         btnHoverFontColor:'#FFFFFF'  
  47.     });  
  48.       
  49.     //自定义大红皮肤  
  50.     $(".testTime").showCalendar({  
  51.         className:'testDate_',  
  52.         innerBorder:"0",  
  53.         topColor:"#FF0000",  
  54.         ymFontColor:'#FFFFFF',  
  55.         ymBgColor:'#FF0000',  
  56.         ymHoverBgColor:'#FF9900',  
  57.         arrowColor:"#FFFFFF",  
  58.         weekBgColor:"#FFFFFF",  
  59.         weekFontColor:'#000000',  
  60.         noThisMonthFontColor:'#AFAFAF',  
  61.         thisMonthFontColor:'#000000',  
  62.         dateHoverFontColor:'#FFFFFF',  
  63.         dateHoverBgColor:'#FF7700',  
  64.         btnBorder:'0',  
  65.         btnBgColor:'#FF0000',  
  66.         btnFontColor:'#FFFFFF',  
  67.         btnHoverBgColor:'#FF7700',  
  68.         btnHoverFontColor:'#FFFFFF'  
  69.     });  
  70.   
  71.   




无标题文档






	
	
	



具体jquery.calendar.js

[javascript] view plain copy print ?
  1. /** 
  2.  * jquery日历插件jqyery.calendar.js 
  3.  * @author:xuzengqiang 
  4.  * @since :2015-2-4 15:31:39 
  5. **/  
  6. ;(function($){     
  7.     jQuery.fn.extend({  
  8.         showCalendar:function(options){  
  9.         var defaultOptions = {  
  10.                 //class名称  
  11.                 className:'strongCalendar',  
  12.                 //日历格式'yyyy-MM-dd'('yyyy-MM-dd','yyyy年MM月dd日')  
  13.                 format:'yyyy-MM-dd',  
  14.                 //高度,默认220px  
  15.                 height:220,  
  16.                 //宽度:默认与文本框宽度相同  
  17.                 width:$(this).innerWidth(),  
  18.                 //日历框离文本框高度  
  19.                 marginTop:1,  
  20.                 //浮层z-index  
  21.                 zIndex:99,  
  22.                 //间隙距离,默认为5px  
  23.                 spaceWidth:8,  
  24.                 //字体大小,默认9pt  
  25.                 fontSize:9,  
  26.                 //日历背景色  
  27.                 bgColor:'#FFFFFF',  
  28.                 //默认浅灰色  
  29.                 borderColor:"#AFAFAF",  
  30.                 //顶部背景颜色,默认为淡灰色  
  31.                 topColor:'#FFFFFF',  
  32.                 //当前年月字体颜色  
  33.                 ymFontColor:'#535353',  
  34.                 //年月份操作背景色  
  35.                 ymBgColor:'#FFFFFF',  
  36.                 //年月份移上背景色  
  37.                 ymHoverBgColor:'#EFEFEF',  
  38.                 //箭头颜色  
  39.                 arrowColor:'#535353',  
  40.                 //里层边框  
  41.                 innerBorder:'1px solid #AFAFAF',  
  42.                 //表格边框  
  43.                 tableBorder:'0px solid #AFAFAF',  
  44.                 //星期背景颜色  
  45.                 weekBgColor:'#EFEFEF',  
  46.                 //星期字体颜色  
  47.                 weekFontColor:'#535353',  
  48.                 //上个月和下个月日期的字体颜色  
  49.                 noThisMonthFontColor:'#CFCFCF',  
  50.                 //这个月的日期字体颜色  
  51.                 thisMonthFontColor:'#535353',  
  52.                 //这个的日期背景颜色  
  53.                 thisMonthBgColor:'#FFFFFF',  
  54.                 //日期移上时字体颜色  
  55.                 dateHoverFontColor:'#3399CC',  
  56.                 //日期移上时字体颜色  
  57.                 dateHoverBgColor:'#EFEFEF',  
  58.                 //button边框  
  59.                 btnBorder:'1px solid #AFAFAF',  
  60.                 //button背景色  
  61.                 btnBgColor:'#FFFFFF',  
  62.                 //button字体颜色  
  63.                 btnFontColor:'#535353',  
  64.                 //button鼠标移上颜色  
  65.                 btnHoverBgColor:'#EFEFEF',  
  66.                 //button鼠标移上字体颜色  
  67.                 btnHoverFontColor:'#3399CC'  
  68.             };  
  69.             var settings = jQuery.extend(defaultOptions,options || {}),  
  70.                 $body = $("body"),  
  71.                 date = new Date(),  
  72.                 currentYear = date.getFullYear(),  
  73.                 currentMonth = date.getMonth(),  
  74.                 monthDay = [],  
  75.                 //行高  
  76.                 lineHeight = parseInt(settings.height-4*settings.spaceWidth)/9,  
  77.                 $calendar,  
  78.                 //触发事件对象  
  79.                 $target = $(this),  
  80.                 current ;  
  81.               
  82.             //对于小于10的数字前+0  
  83.             Number.prototype.addZero = function(){  
  84.                 return this<10?"0"+this:this;  
  85.             };  
  86.             var Calendar = {  
  87.                     //星期列表  
  88.                     weeks : ['日','一','二','三','四','五','六'],  
  89.                     //每月的天数  
  90.                     months : [31,0,31,30,31,30,31,31,30,31,30,31],  
  91.                     //初始化日历  
  92.                     loadCalendar:function(){  
  93.                         $body.append("+settings.className+">
");  
  •                         $calendar = $("."+settings.className);  
  •                         //新增核心html  
  •                         $calendar.append(Calendar.innerHTML());  
  •                         //样式加载  
  •                         Calendar.styleLoader();  
  •                         //核心日历加载  
  •                         Calendar.loaderDate(currentYear,currentMonth);  
  •                         //事件绑定  
  •                         Calendar.dateEvent();  
  •                     },  
  •                     //日历核心HTML  
  •                     innerHTML:function(){  
  •                         var htmlContent = {};  
  •                         htmlContent = ""  
  •                                           ""+  
  •                                             "
  • "+  
  •                                             "
  • "+  
  •                                             ""+   
  •                                               
  •                                           "
  • "+  
  •                                           ""+  
  •                                             "
  • "+  
  •                                             "
  • "+  
  •                                             ""+  
  •                                           "
  • "+  
  •                                       "
  • "  
  •                                       "
  • "+  
  •                                       ""  
  •                                         "清空"+  
  •                                         "今天"+  
  •                                         "确定"+  
  •                                       "
  • ";  
  •                         return htmlContent;  
  •                                      
  •                     },  
  •                     //日历样式加载  
  •                     styleLoader:function(){  
  •                         $calendar = $("."+settings.className);    
  •                         //总弹出层样式设置  
  •                         $calendar.css({"border-width":"1px",  
  •                                        "border-color":settings.borderColor,  
  •                                        "background-color":settings.bgColor,  
  •                                        "border-style":"solid",  
  •                                        "height":settings.height,  
  •                                        "width":settings.width,  
  •                                        "z-index":settings.zIndex,  
  •                                        "font-size":settings.fontSize+"pt"  
  •                                       });  
  •                         Calendar.setLocation();  
  •                         //日历顶部样式设置  
  •                         var $calHead=$calendar.find(".cal_head"),  
  •                             $operDate=$calendar.find(".oper_date"),  
  •                             $arrow=$calHead.find(".arrow"),  
  •                             $center=$calendar.find(".cal_center"),  
  •                             $ctable=$center.find("table"),  
  •                             //箭头大小  
  •                             arrowWidth = 6,  
  •                             $calBottom = $calendar.find(".cal_bottom");  
  •                               
  •                         $calHead.css({"height":lineHeight+2*settings.spaceWidth,  
  •                                       "background-color":settings.topColor  
  •                                      });  
  •                           
  •                         $operDate.css({"margin-top":settings.spaceWidth,  
  •                                        "margin-left":settings.spaceWidth,  
  •                                        "float":"left",  
  •                                        "border":settings.innerBorder,  
  •                                        "text-align":"center"  
  •                                      });  
  •                         //设置operDate包含边框的实际宽度  
  •                         $operDate.outerWidth(($calHead.width()-3*settings.spaceWidth)/2);  
  •                         $operDate.outerHeight(lineHeight);  
  •                         $operDate.find(".operb")  
  •                                  .css({"width":"20px",  
  •                                        "background":settings.ymBgColor,  
  •                                        "height":$operDate.innerHeight(),  
  •                                        "cursor":"pointer"  
  •                                      });  
  •                         $operDate.find(".year_sub,.month_sub")  
  •                                  .css({"float":"left","border-right":settings.innerBorder});  
  •                         $operDate.find(".year_add,.month_add")  
  •                                  .css({"float":"right","border-left":settings.innerBorder});  
  •                         $operDate.find("span")  
  •                                  .css({"color":settings.ymFontColor,  
  •                                        "line-height":$operDate.height()+"px"  
  •                                      });  
  •                                    
  •                         //设置箭头样式  
  •                         $operDate.find(".aLeft")  
  •                                  .arrow({"direction":"left",  
  •                                          "width":arrowWidth,  
  •                                          "height":arrowWidth*2,  
  •                                          "color":settings.arrowColor  
  •                                        });  
  •                         $operDate.find(".aRight")  
  •                                  .arrow({"direction":"right",  
  •                                          "width":arrowWidth,  
  •                                          "height":arrowWidth*2,  
  •                                          "color":settings.arrowColor  
  •                                        });  
  •                         $arrow.css({  
  •                             "margin":"0 auto",  
  •                             "margin-top":parseInt($operDate.innerHeight())/2-arrowWidth     
  •                         });  
  •                           
  •                         //加载中间表格样式  
  •                         $center.css({  
  •                             "border":settings.innerBorder,  
  •                             "margin-left":settings.spaceWidth,  
  •                             "overflow":'hidden'  
  •                         });  
  •                         //加载中间表格实际宽度  
  •                         $center.outerWidth($calendar.width()-2*settings.spaceWidth);  
  •                         $center.height(lineHeight*7);  
  •                           
  •                         $ctable.find("td").css({"text-align":"center"});  
  •                         $calBottom.css({"margin-right":settings.spaceWidth});  
  •                         $calBottom.find("button")  
  •                                   .css({"border":settings.btnBorder,  
  •                                         "background":settings.btnBgColor,  
  •                                         "color":settings.btnFontColor,  
  •                                         "margin-top":settings.spaceWidth,  
  •                                         "margin-left":settings.spaceWidth,  
  •                                         "float":"right","width":"20%"  
  •                                       });  
  •                         $calBottom.find("button").outerHeight(lineHeight);  
  •                         //去除button链接的虚线框  
  •                         $("."+settings.className+" button").focus(function(){this.blur()});  
  •                           
  •                         $operDate.find(".operb").hover(function(){  
  •                             $(this).css("background",settings.ymHoverBgColor);                         
  •                         },function(){  
  •                             $(this).css("background",settings.ymBgColor);  
  •                         });  
  •                           
  •                         $calBottom.find("button").hover(function(){  
  •                             $(this).css({"background":settings.btnHoverBgColor,"color":settings.btnHoverFontColor});  
  •                         },function(){  
  •                             $(this).css({"background":settings.btnBgColor,"color":settings.btnFontColor});  
  •                         });  
  •                     },  
  •                     //事件绑定  
  •                     dateEvent:function(){  
  •                         var $calendar = $("."+settings.className);  
  •                         $calendar.find(".year_add").click(function(){Calendar.yearAdd();});  
  •                         $calendar.find(".year_sub").click(function(){Calendar.yearSub();});  
  •                         $calendar.find(".month_add").click(function(){Calendar.monthAdd();});  
  •                         $calendar.find(".month_sub").click(function(){Calendar.monthSub();});  
  •                         $calendar.find(".confirm_date").click(function(){Calendar.confirm();});  
  •                         $calendar.find(".today_date").click(function(){Calendar.getToday();});  
  •                         $calendar.find(".clear_date").click(function(){Calendar.clear();});  
  •                     },  
  •                     //当前日期:年份和月份  
  •                     date:function(){  
  •                         var $calendar = $("."+settings.className);  
  •                         return {  
  •                             year:parseInt($calendar.find(".current_year").html()),  
  •                             month:parseInt($calendar.find(".current_month").html())  
  •                         };  
  •                     },  
  •                     //年份自增  
  •                     yearAdd:function(){  
  •                         Calendar.loaderDate(Calendar.date().year+1,Calendar.date().month-1);  
  •                     },  
  •                     //年份自减  
  •                     yearSub:function(){  
  •                         Calendar.loaderDate(Calendar.date().year-1,Calendar.date().month-1);  
  •                     },  
  •                     //月份自增  
  •                     monthAdd:function(){  
  •                         var year = Calendar.date().year, month = Calendar.date().month;  
  •                         if(month==12) {    
  •                             month=1;    
  •                             year=year+1;    
  •                         } else {    
  •                             month=month+1;    
  •                         }    
  •                         Calendar.loaderDate(year,month-1);  
  •                     },  
  •                     //月份自减  
  •                     monthSub:function(){  
  •                         var year = Calendar.date().year, month = Calendar.date().month;  
  •                         if(month==1) {    
  •                             month=12;    
  •                             year=year-1;    
  •                         } else {    
  •                             month=month-1;    
  •                         }    
  •                         Calendar.loaderDate(year,month-1);  
  •                     },  
  •                     //日期选择  
  •                     dateChoose:function($object){  
  •                         var year = Calendar.date().year, month = Calendar.date().month;  
  •                         //上一个月  
  •                         if($object.hasClass("pre_month_day")) {  
  •                             if(month == 1) {  
  •                                 year = year-1;  
  •                                 month = 12;  
  •                             } else {  
  •                                 month = (month-1).addZero();  
  •                             }  
  •                         //当前月     
  •                         } else if($object.hasClass("this_month_day")) {  
  •                             month = month.addZero();  
  •                         //下一个月  
  •                         } else {  
  •                             if(month == 12) {  
  •                                 month = "01";  
  •                                 year = year + 1;  
  •                             } else {  
  •                                 month = (month+1).addZero();  
  •                             }  
  •                         }  
  •                         current.val(year+"-"+month+"-"+$object.text());  
  •                     },  
  •                     //确定事件  
  •                     confirm:function(){  
  •                         Calendar.destory();  
  •                     },  
  •                     //是否是闰年  
  •                     isLeapYear:function(year){  
  •                         if((year%4==0 && year%100!=0) || (year%400==0)) {  
  •                             return true;      
  •                         }  
  •                         return false;  
  •                     },      
  •                     //指定年份二月的天数  
  •                     februaryDays:function(year){  
  •                         if(typeof year !== "undefined" && parseInt(year) === year) {  
  •                             return Calendar.isLeapYear(year) ? 29:28;  
  •                         }  
  •                         return false;  
  •                     },  
  •                     getWeek:function(num){  
  •                         return Calendar.weeks[num];  
  •                     },  
  •                     //获取指定月份[0,11]的天数  
  •                     getMonthDay:function(year,month){  
  •                         if(month === 1){  
  •                             return Calendar.februaryDays(year);  
  •                         }  
  •                         month=(month===-1)?11:month;  
  •                         return Calendar.months[month];  
  •                     },  
  •                     //今天  
  •                     getToday:function(){  
  •                         var date = new Date(),  
  •                             year = date.getFullYear(),  
  •                             month = (date.getMonth()+1).addZero(),  
  •                             day = date.getDate().addZero();  
  •                         current.val(year+"-"+month+"-"+day);  
  •                         Calendar.destory();  
  •                     },  
  •                     //清空  
  •                     clear:function(){  
  •                         current.val("");  
  •                         Calendar.destory();  
  •                     },  
  •                     //设置日历位置  
  •                     setLocation:function(){  
  •                         $calendar = $("."+settings.className);    
  •                         var left = current.offset().left,  
  •                             top = current.offset().top + current.innerHeight() + settings.marginTop;  
  •                         $calendar.css({"position":"absolute","left":left,"top":top});  
  •                     },  
  •                     //关闭日历  
  •                     destory:function(){  
  •                         $("."+settings.className).empty().remove();  
  •                     },  
  •                     //初始化日历主体内容  
  •                     loaderDate:function(year,month){  
  •                         //初始化日期为当前年当前月的1号,获取1号对应的星期     
  •                         var oneWeek=new Date(year,month,1).getDay(),  
  •                             $calendar = $("."+settings.className),  
  •                             $calTable = $calendar.find("table"),  
  •                             //这个月天数  
  •                             thisMonthDay = Calendar.getMonthDay(year,month),  
  •                             //获取上一个的天数  
  •                             preMonthDay;  
  •                         //清空日期列表  
  •                         $calTable.html("");  
  •                           
  •                         $calendar.find(".current_year").text(year+"年");   
  •                         $calendar.find(".current_month").text((month+1)+"月");     
  •                         if(oneWeek == 0) oneWeek = 7;  
  •                           
  •                         if(i==0) {  
  •                             preMonthDay = Calendar.getMonthDay(year-1,11);  
  •                         } else {  
  •                             preMonthDay = Calendar.getMonthDay(year,month-1);  
  •                         }  
  •                         var start = 1, end = 1;    
  •                         for(var i=0;i<7;i++) {  
  •                             var dayHTML = "";  
  •                             if(i==0) {  
  •                                 $calTable.append("");  
  •                             }  
  •                             for(var j=1;j<=7;j++) {    
  •                                 //设置星期列表  
  •                                 if(i==0) {     
  •                                     $calTable.find(".week_head").append(""+Calendar.getWeek(j-1)+"");   
  •                                 } else {    
  •                                     if((i-1)*7+j<=oneWeek) { //从第二行开始设置值                         
  •                                         dayHTML+=""+(preMonthDay-oneWeek+j)+"";  
  •                                     } else if((i-1)*7+j<=thisMonthDay+oneWeek ){    
  •                                         var result=(start++).addZero();    
  •                                         dayHTML+=""+result+"";  
  •                                     } else {    
  •                                         var result=(end++).addZero();    
  •                                         dayHTML +=""+result+"";   
  •                                     }    
  •                                 }     
  •                             }       
  •                             if(i>0){  
  •                                 $calTable.append(""+dayHTML+"");  
  •                             }  
  •                         }   
  •                         Calendar.tableStyle();  
  •                     },  
  •                     //表格样式初始化  
  •                     tableStyle:function(){  
  •                         //表格中单元格的宽度  
  •                         var $center = $calendar.find(".cal_center"),  
  •                             $calTable = $calendar.find("table"),  
  •                             tdWidth = parseFloat($center.width())/7;  
  •                               
  •                         $calTable.find("td").css({"width":tdWidth,"text-align":"center",  
  •                                                   "color":"#AFAFAF",  
  •                                                   "background":settings.thisMonthBgColor,"cursor":"pointer",  
  •                                                   "color":settings.thisMonthFontColor,  
  •                                                   "border-top":settings.tableBorder,  
  •                                                   "border-right":settings.tableBorder});  
  •                         $calTable.find(".week_head td")  
  •                                  .css({"background":settings.weekBgColor,  
  •                                        "cursor":"auto","border":"0",  
  •                                        "color":settings.weekFontColor  
  •                                      });  
  •                         $calTable.find(".pre_month_day,.next_month_day")  
  •                                  .css({"color":settings.noThisMonthFontColor,"background":"transparent"});  
  •                         //去除最右侧表格的右边框  
  •                         $calTable.find("td:nth-child(7n)").css({"border-right":0});  
  •                         $calTable.find("td").outerHeight(lineHeight);  
  •                       
  •                         $calTable.find("tr[class!=week_head] td").hover(function(){  
  •                             $(this).css({"background":settings.dateHoverBgColor,  
  •                                          "color":settings.dateHoverFontColor  
  •                                        });  
  •                         },function(){  
  •                             $(this).css({"background":settings.thisMonthBgColor});  
  •                             if($(this).hasClass("this_month_day")) {  
  •                                 $(this).css({"color":settings.thisMonthFontColor});  
  •                             } else {  
  •                                 $(this).css({"color":settings.noThisMonthFontColor});  
  •                             }  
  •                         }).click(function(){Calendar.dateChoose($(this));});  
  •                     }  
  •                 };  
  •               
  •             return this.each(function(){  
  •                 $target.click(function(){  
  •                     //触发对象,请写在点击事件中,不然会做为全局变量!  
  •                     current = $(this);  
  •                     //如果没有生成日历元素  
  •                     if($("."+settings.className).length == 0) {  
  •                         Calendar.loadCalendar();                     
  •                     }  
  •                 });  
  •                 //事件触发对象  
  •                 $(document).click(function(event){  
  •                     var $calendar = $("."+settings.className)  
  •                     if(!$target.triggerTarget(event) && !$calendar.triggerTarget(event)) {  
  •                         Calendar.destory();  
  •                     }  
  •                 });  
  •             });  
  •         },  
  •         /** 
  •          *描述:生成指定箭头样式 
  •         **/  
  •         arrow:function(options){  
  •             var defaultOptions = {  
  •                     color:'#AFAFAF',  
  •                     height:20,  
  •                     width:20,  
  •                     //方向:默认向上'top',供选择['up','bottom','left','right']  
  •                     direction:'top'  
  •                 };  
  •             var settings = jQuery.extend(defaultOptions,options||{}),  
  •                 current = $(this);  
  •             function loadStyle(){  
  •                 current.css({"display":"block","width":"0","height":"0"});  
  •                 if(settings.direction === "top" || settings.direction === "down") {  
  •                     current.css({  
  •                                 "border-left-width":settings.width/2,  
  •                                 "border-right-width":settings.width/2,  
  •                                 "border-left-style":"solid",  
  •                                 "border-right-style":"solid",  
  •                                 "border-left-color":"transparent",  
  •                                 "border-right-color":"transparent"  
  •                                 });  
  •                     if(settings.direction === "top") {  
  •                         current.css({  
  •                                 "border-bottom-width":settings.height,  
  •                                 "border-bottom-style":"solid",  
  •                                 "border-bottom-color":settings.color      
  •                                 });  
  •                     } else {  
  •                         current.css({  
  •                                 "border-top-width":settings.height,  
  •                                 "border-top-style":"solid",  
  •                                 "border-top-color":settings.color     
  •                                 });  
  •                     }  
  •                 } else if(settings.direction === "left" || settings.direction === "right") {  
  •                     current.css({  
  •                                 "border-top-width":settings.height/2,  
  •                                 "border-bottom-width":settings.height/2,  
  •                                 "border-top-style":"solid",  
  •                                 "border-bottom-style":"solid",  
  •                                 "border-top-color":"transparent",  
  •                                 "border-bottom-color":"transparent"  
  •                                 });  
  •                     if(settings.direction === "left") {  
  •                         current.css({  
  •                                 "border-right-width":settings.width,  
  •                                 "border-right-style":"solid",  
  •                                 "border-right-color":settings.color   
  •                                 });  
  •                     } else {  
  •                         current.css({  
  •                                 "border-left-width":settings.width,  
  •                                 "border-left-style":"solid",  
  •                                 "border-left-color":settings.color    
  •                                 });  
  •                     }  
  •                 }  
  •             }  
  •             return this.each(function(){ loadStyle(); });  
  •         },  
  •         //触发事件是否是对象本身  
  •         triggerTarget:function(event){  
  •             //如果触发的是事件本身或者对象内的元素  
  •             return $(this).is(event.target) || $(this).has(event.target).length > 0;   
  •         },  
  •         //皮肤  
  •         skin:function(){  
  •               
  •         }  
  •     });  
  • })(jQuery);  
  • 你可能感兴趣的:(JS/HTML)