⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calendar.js

📁 网龙仿阿里巴巴程序源码(java版) v2.5.rar
💻 JS
📖 第 1 页 / 共 2 页
字号:
/*******************************************************************************************
 
 * 创建对象   var c = new Calendar("c"); document.write(c);
 * 调用方法  c.show(arg1,arg2,arg3)
 * 参数1: 文本输入框(必填). 如 onfocus="c.show(this)";
 * 参数2: 按钮或其它可用单击事件的HTML元素(如果使用按钮方式则必填). 
          如 onclick="c.show(this,c.getObjById(*))"  *=文本输入框名称
 * 参数3: 如果没有文本框没有值则使用该值初始化日历(选填). 
          如 onfocus="c.show(this,'2006-01-01')
   
 * 注: 参数顺序不分先后.  MSIE6/Opera8/FireFox1.5 下测试通过
 
   
   
************************如果您使用本日历控件 请保留该信息 谢谢! ***************************   
 * http://2lin.net
 * Email:caoailin@gmail.com 
 * QQ:38062022 
 * Creation date: 2006-11-22 
*********************************************************************************************/

function Calendar(objName)  
{		
	this.style = {
	
	   borderColor       		: "#909eff", //边框颜色
	   headerBackColor    		: "#909EFF", //表头背景颜色
	   headerFontColor    		: "#ffffff", //表头字体颜色
	   bodyBarBackColor  		: "#f4f4f4", //日历标题背景色
	   bodyBarFontColor  		: "#000000", //日历标题字体色
	   bodyBackColor     		: "#ffffff", //日历背景色
	   bodyFontColor            : "#000000", //日历字体色 
	   bodyHolidayFontColor     : "#ff0000", //假日字体色
	   watermarkColor 		    : "#d4d4d4",  //背景水印色
	   moreDayColor             : "#cccccc" 
	   
	};
	
	this.showMoreDay = false; //是否显示上月和下月的日期
	
	this.Obj = objName;		
	this.date = null;
	
	this.mouseOffset = null;
	this.dateInput = null;
	this.timer = null;	
	
};

Calendar.prototype.toString = function()
{   
   var str = this.getStyle();
   str += '<div Author="alin" class="calendar" style="display:none;" onselectstart="return false" oncontextmenu="return false" id="Calendar">\n';
   str += '<div Author="alin" class="cdrWatermark" id="cdrWatermark"></div><div id="cdrBody" style="position:absolute;left:0px;top:0px;z-index:2;width:140px;">';
   str += this.getHeader();
   str += this.getBody();   
   str += '</div><div Author="alin" id="cdrMenu" style="position:absolute;left:0px;top:0px;z-index:3;display:none;"  onmouseover="' + this.Obj + '.showMenu(null);" onmouseout="' + this.Obj + '.hideMenu();"></div></div>';
   return str;
};

Calendar.prototype.getStyle = function()
{
    var str = '<style type="text/css">\n';
	str += '.calendar{position:absolute;width:140px!important;width /**/:142px;height:184px!important;height /**/:174px;background-color:'+this.style.bodyBackColor+';border:1px solid ' + this.style.borderColor + ';left:0px;top:0px;z-index:9999;}\n';
	str += '.cdrHeader{background-color:'+ this.style.headerBackColor +';width:140px;height:22px;font-size:12px;color:'+this.style.headerFontColor+';}\n';
	str += '.cdrWatermark{position:absolute;left:0px;top:55px;width:140px;font-family: Arial Black;font-size:50px;color:'+this.style.watermarkColor+';z-index:1;text-align:center;}\n';
	str += '.cdrBodyBar{background-color:' + this.style.bodyBarBackColor + ';font-size:12px;color:' + this.style.bodyBarFontColor + ';width:140px;height:20px;}\n';
	str += '.cdrBody{width:140px;height:122px!important; height /**/:110px;font-size:12px;cursor:pointer;color:' + this.style.bodyFontColor + ';}\n';
	str += '.dayOver{height:16px;padding:0px;border:1px solid black;background-color:#f4f4f4;}\n';
	str += '.dayOut{padding:1px;border:none;height:16px;}\n';
    str += '.menuOver{background-color:'+this.style.headerBackColor+';color:'+this.style.headerFontColor+';font-size:12px;}\n';
	str += '.headerOver{border:1px solid black;background-color:#f4f4f4;color:black;cursor:default;}\n';
	str += '.cdrMenu{font-size:12px;border:1px solid #000000;background-color:#ffffff;cursor:default;width:100%}\n';
	str += 'html>body #Calendar{width:142px;174px;}';
	str += '</style>\n';	
	return str;
	
};

Calendar.prototype.getHeader = function()
{
    var str = '<table Author="alin" class="cdrHeader" cellSpacing="2" cellPadding="0"><tr Author="alin" align="center">\n';
	str += '<td Author="alin" onmouseover="this.className=\'headerOver\'" onmouseout="this.className=\'\'" id="previousYear" title="上一年份" style="cursor:pointer;width:10px;" onclick="'+this.Obj+'.onChangeYear(false);"><<</td>\n';
	str += '<td Author="alin" onmouseover="this.className=\'headerOver\'" onmouseout="this.className=\'\'" id="previousMonth" title="上一月份" style="cursor:pointer;width:10px;" onclick="'+this.Obj+'.onChangeMonth(false);"><</td>\n';
	str += '<td Author="alin" onmouseover="this.className=\'headerOver\'" id="currentYear" style="width:50px;" onclick="' + this.Obj + '.showMenu(true);" onmouseout="' + this.Obj + '.hideMenu();this.className=\'\';">0</td>\n';
	str += '<td Author="alin" onmouseover="this.className=\'headerOver\'" id="currentMonth" onclick="' + this.Obj + '.showMenu(false);" onmouseout="' + this.Obj + '.hideMenu();this.className=\'\';">0</td>\n';
	str += '<td Author="alin" onmouseover="this.className=\'headerOver\'" onmouseout="this.className=\'\'" id="nextMonth" title="下一月份" style="cursor:pointer;width:10px;" onclick="'+this.Obj+'.onChangeMonth(true);">></td>\n';
	str += '<td Author="alin" onmouseover="this.className=\'headerOver\'" onmouseout="this.className=\'\'" id="nextYear" title="下一年份" style="cursor:pointer;width:10px;" onclick="'+this.Obj+'.onChangeYear(true);">>></td></tr>\n';
	str += '</table>\n';
	return str;
};

Calendar.prototype.getBody = function()
{
   var n = 0;
   var str = this.getBodyBar();
   str += '<table Author="alin" class="cdrBody" cellSpacing="2" cellPadding="0">\n';   
   for(i = 0; i < 6; i++)
	{	  
	    str += '<tr Author="alin" align="center">';
		for(j = 0; j < 7; j++)
		{
			 str += '<td Author="alin" class="dayOut" id="cdrDay'+(n++)+'" width="13%"></td>\n';
		}
		str += '</tr>';
	}
   str += '</table>\n';
   str += '<table Author="alin" class="cdrBodyBar" cellSpacing="2" cellPadding="0"><tr align="center" Author="alin"><td Author="alin" style="cursor:pointer;" onclick="'+this.Obj+'.getToday();">今天:'+new Date().toFormatString("yyyy年mm月dd日")+'</td></tr></table>\n';
   return str;
};

Calendar.prototype.getBodyBar = function()
{
   var str = '<table Author="alin_bar" id="cdrBodyBar" class="cdrBodyBar" style="cursor:move;" cellSpacing="2" cellPadding="0"><tr Author="alin_bar" align="center">\n';
   var day = new Array('日','一','二','三','四','五','六');
   for(i = 0; i < 7; i++)
   {
      str += '<td Author="alin_bar">' + day[i] + '</td>\n';     
   }
   str += '</tr></table>';
   return str;  
}

Calendar.prototype.getYearMenu = function(year)
{
 
   var str = '<table Author="alin" cellSpacing="0" class="cdrMenu" cellPadding="0">\n';
   for(i = 0; i < 10; i++)
	{	  
	    var _year = year + i;
		var _date = new Date(_year,this.date.getMonth(),this.date.getDate());
		
	    str += '<tr Author="alin" align="center"><td Author="alin" width="13%" height="16" ';
		if(this.date.getFullYear() != _year)
		{
			str += 'onmouseover="this.className=\'menuOver\'" onmouseout="this.className=\'\'" ';
		}
		else
		{
		   str += 'class="menuOver"';
		}
		str += 'onclick="' + this.Obj + '.bindDate(\'' + _date.toFormatString("-") + '\')">' + _year + '年</td>\n';		
		str += '</tr>';
	}

   str += '<tr Author="alin" align="center"><td Author="alin"><table Author="alin" style="font-size:12px;width:100%;" cellSpacing="0" cellPadding="0">\n';
   str += '<tr Author="alin" align="center"><td Author="alin" onmouseover="this.className=\'menuOver\'" onmouseout="this.className=\'\'" onclick="'+this.Obj+'.getYearMenu('+ (year - 10) + ')"><<</td>\n';
   str += '<td Author="alin" onmouseover="this.className=\'menuOver\'" onmouseout="this.className=\'\'" onclick="'+this.Obj+'.getYearMenu('+ (year + 10) +')">>></td><tr>\n';
   str += '</table></td></tr>\n';
   str += '</table>';
   
   var _menu = getObjById("cdrMenu");
	_menu.innerHTML = str;
   
};

Calendar.prototype.getMonthMenu = function()
{
   
   var str = '<table Author="alin" cellSpacing="0" class="cdrMenu" cellPadding="0">\n';
   for(i = 1; i <= 12; i++)
	{   
		var _date = new Date(this.date.getFullYear(),i-1,this.date.getDate());		
			
		str += '</tr><tr Author="alin" align="center"><td Author="alin" height="16" ';
		if(this.date.getMonth() + 1 != i)
		{
			str += 'onmouseover="this.className=\'menuOver\'" onmouseout="this.className=\'\'" ';
		}
		else
		{
		   str += 'class="menuOver"';
		}
		str += 'onclick="' + this.Obj + '.bindDate(\'' + _date.toFormatString("-") + '\')">'+i+'月</td></tr>\n';
	}
   str += '</table>';
   
   var _menu = getObjById("cdrMenu");
	_menu.innerHTML = str;   
};

Calendar.prototype.show = function()
{
   if (arguments.length >  3  || arguments.length == 0)
   {
      alert("对不起!传入参数不对!" );
	  return;
	}   
	
   var _date = null;
   var _evObj = null;
   var _initValue = null  
	
   for(i = 0; i < arguments.length; i++)
   {
      if(typeof(arguments[i]) == "object" && arguments[i].type == "text")
	   {_date = arguments[i];}
	  else if(typeof(arguments[i]) == "object")
	   {_evObj = arguments[i];}
	  else if(typeof(arguments[i]) == "string")
	   {_initValue = arguments[i];}  
   }
    _evObj = _evObj || _date;
	inputObj = _date;
	targetObj = _evObj
	
	if(!_date){alert("传入参数错误!"); return;}
	
   this.dateInput = _date;
   
   _date = _date.value;
   
   if(_date == "" && _initValue) _date = _initValue;   
   
   this.bindDate(_date);        
   
   var _target = getPosition(_evObj);   
   var _obj = getObjById("Calendar");
   _obj.style.display = ""; 
   
  
   _obj.style.left = _target.x + 'px';
   if((document.body.clientHeight - (_target.y + _evObj.clientHeight)) >= _obj.clientHeight)
   {        
      _obj.style.top = (_target.y + _evObj.clientHeight) + 'px';
	}
	else
	{	  
       _obj.style.top = (_target.y - _obj.clientHeight) + 'px';
	}
        
};


Calendar.prototype.hide = function()
{
    var obj = getObjById("Calendar");
	obj.style.display = "none";   
};

Calendar.prototype.bindDate = function(date)
{
   
	var _monthDays = new Array(31,30,31,30,31,30,31,31,30,31,30,31);	
	var _arr = date.split('-');		
    var _date = new Date(_arr[0],_arr[1]-1,_arr[2]);	
	if(isNaN(_date)) _date = new Date();	
	this.date = _date;
	this.bindHeader();	
	
	var _year = _date.getFullYear();
	var _month = _date.getMonth();
	var _day = 1;	
	
	var _startDay = new Date(_year,_month,1).getDay();
	var _previYear = _month == 0 ? _year - 1 : _year;
	var _previMonth = _month == 0 ? 11 : _month - 1;
	var _previDay = _monthDays[_previMonth];
	if (_previMonth == 1) _previDay =((_previYear%4==0)&&(_previYear%100!=0)||(_previYear%400==0))?29:28;	
	_previDay -= _startDay - 1;
	var _nextDay = 1;
   
	 _monthDays[1] = ((_year%4==0)&&(_year%100!=0)||(_year%400==0))?29:28;

	for(i = 0; i < 40; i++)
	{	
	    var _dayElement = getObjById("cdrDay" + i);
		
		_dayElement.onmouseover = Function(this.Obj + ".onMouseOver(this)");
		_dayElement.onmouseout = Function(this.Obj + ".onMouseOut(this)");
		_dayElement.onclick = Function(this.Obj + ".onClick(this)");
		this.onMouseOut(_dayElement);	 		
		_dayElement.style.color = "";
		
		if(i < _startDay)
		{
		    //获取上一个月的日期
			if(this.showMoreDay)
			{
			   var _previDate = new Date(_year,_month - 1,_previDay);
			   _dayElement.innerHTML = _previDay;
			   _dayElement.title = _previDate.toFormatString("yyyy年mm月dd日");
		       _dayElement.value = _previDate.toFormatString("-");	
			   _dayElement.style.color = this.style.moreDayColor;	
		   
		       _previDay++;
			   
			}else
			{
			   _dayElement.innerHTML = "";
		       _dayElement.title = "";
			}
		
		}
		else if(_day > _monthDays[_month])
		{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -