首頁 >web前端 >js教程 >jQuery寫的日曆(包括日曆的樣式及功能)_jquery

jQuery寫的日曆(包括日曆的樣式及功能)_jquery

WBOY
WBOY原創
2016-05-16 17:35:351198瀏覽
複製代碼如下代碼:

渡//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


>
標題>


var c = new Calendar(" c");
document.write(c);
腳本>
頭>

;
普通呼叫:>
>>


按鈕呼叫:id="button" type = "button" onclick="c.showMoreDay = true; c.show(getObjById('btntxt'), '1982-1-1', this)" />>

>
id="button3" type="button" onclick="c.showMoreDay = true; c.show(this, getObjById('btntxt3'))" />

身體>


需要的jQuery檔案
複製程式碼程式碼如下:

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 += '';
返回str;
};
Calendar.prototype.getStyle = function()
{
var str = 'n';
回傳str;
};
Calendarar .prototype.getHeader = function()
{
var str = 'n';
str = 'n';
str = 'n';
str = 'n';
str = '
n';
str = '
n';
str = '
0 td>n';
str = '
0>>>
n';
返回str;
};
Calendar.prototype.getBody = function()
{
var n = 0;
var str = this.getBodyBar();
str = 'n';
for(i = 0; i {
str = '';
for(j = 0; j {
str = 'n';
}
str = '';
}
str = '
n';
str = '
今天:' new Date ().toFormatString("yyyy年mm月dd日") '
;n';
返回str;
};
Calendar.prototype.getBodyBar = function()
{
var str = 'n';
var day = new Array('日','一','二','三','四','五', '六');
for(i = 0; i {
str = 'n' ;
}
str = '
' 天[i] '
';
回傳str;
}
Calendar.prototype.getYearMenu = 函數(年份)
{
var str = 'n ';
for(i = 0; i {
var _year = 年 i;
var _date = new Date(_year,this.date.getMonth(),this.date.getDate());
str = 'n';
str = '';
}
str = 'n';
str = '表>';
var _menu = getObjById("cdrMenu");
_menu.innerHTML = str;
};
Calendar.prototype.getMonthMenu = function()
{
var str = '
if(this.date.getFullYear() != _year)
{
str = 'onmouseover="this.className='menuOver'" onmouseout="this.className=''" ';
}
其他
{
str = 'class="menuOver"';
}
str = 'onclick="' this.Obj '.bindDate('' _date.toFormatString("-") '')">' _year '年
n';
str = '
n';
str = '
>>
n';
for(i = 1; i {
var _date = new Date(this.date.getFullYear(),i-1,this.date.getDate()) ;
str = 'n' ;
}
str = '
if(this.date.getMonth() 1 != i)
{
str = 'onmouseover="this.className='menuOver'" onmouseout="this.className=''" ';
}
其他
{
str = 'class="menuOver"';
}
str = 'onclick="' this.Obj '.bindDate('' _date.toFormatString("-") '')">'我'月
';
var _menu = getObjById("cdrMenu");
_menu.innerHTML = str;
};
Calendar.prototype.show = function()
{
if (arguments.length > 3 || argument.length == 0)
{
alert("形成參數!" );
return;
}
var _date = null;
var _evObj = null;
var _initValue = null
for(i = 0; i {
if(typeof(arguments[i]) == "object" && argument[i].type == "text")
{_date = argument[i];}
else if(typeof(arguments[i]) == "object")
{_evObj = argument[i];}
else if(typeof(arguments[i]) == "string")
{_initValue = argument[i];}
}
_evObj = _evObj || _date;
inputObj = _date;
targetObj = _evObj
if(化參數錯誤! bindDate(_date);
var _target = getPosition(_evObj);
var _obj = getObjById("日曆");
_obj.style.display = "" = _target.get.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';
}
日曆.prototype .hide = function()
{
var obj = getObjById("日曆");
obj.style.display = "none";
};
Calendar.prototype.bindDate = 函數(日期)
{
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 ? _年 - 1 : _年;
var _previMonth = _month == 0 ? 11:_月 - 1;
var _previDay = _monthDays[_previMonth];
if (_previMonth == 1) _previDay =((_previYear%4==0)&&(_previYear0!=0)||(_previYear@0==0))?29:28;
_previDay -= _startDay - 1;
var _nextDay = 1;
_monthDays[1] = ((_year%4==0)&&(_year0!=0)||(_year@0==0))?29:28;
for(i = 0; 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 {
//取得上個月的日期
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;
} 否則
{
_dayElement.innerHTML = "";
_dayElement.title = "";
}
}
else if(_day > _monthDays[_month])
{
//取得下個月的日期
if(this.showMoreDay)
{
var _nextDate = new Date(_year,_month 1,_nextDay);
_dayElement.innerHTML = _nextDay;
_dayElement.title = _nextDate.toFormatString("yyyy年mm月dd日");
_dayElement.value = _nextDate.toFormatString("-");
_dayElement.style.color = this.style.moreDayColor;
_下一天;
} 否則
{
_dayElement.innerHTML = "";
_dayElement.title = "";
}
}
else if(i >= new Date(_year,_month,1).getDay() && _day {
//取得本月日期
_dayElement.innerHTML = _day;
if(_day == _date.getDate())
{
this.onMouseOver(_dayElement);
_dayElement.onmouseover = Function("");
_dayElement.onmouseout = Function("");
}
if(this.isHoliday(_year,_month,_day))
{
_dayElement.style.color = this.style.bodyHolidayFontColor;
}
var _curDate = new Date(_年, _月, _日);
_dayElement.title = _curDate.toFormatString("yyyy年mm月dd日");
_dayElement.value = _curDate.toFormatString("-");
_日;
}
其他
{
_dayElement.innerHTML = "";
_dayElement.title = "";
}
}
var _menu = getObjById("cdrMenu");
_menu.style.display = "無";
};
Calendar.prototype.bindHeader = function()
{
var _curYear = getObjById("currentYear");
var _curMonth = getObjById("currentMonth");
var _watermark = getObjById("cdrWatermark");
_curYear.innerHTML = this.date.toFormatString("yyyy年");
_curMonth.innerHTML = this.date.toFormatString("mm月");
_watermark.innerHTML = this.date.getFullYear();
};
Calendar.prototype.getToday = function()
{
var _date = new Date();
this.bindDate(_date.toFormatString("-"));
};
Calendar.prototype.isHoliday = function(年、月、日)
{
var _date = new Date(年、月、日);
return (_date.getDay() == 6 || _date.getDay() == 0);
};
Calendar.prototype.onMouseOver = function(obj)
{
obj.className = "dayOver";
};
Calendar.prototype.onMouseOut = function(obj)
{
obj.className = "dayOut";
};
Calendar.prototype.onClick = function(obj)
{
if(obj.innerHTML != "") this.dateInput.value = obj.value;
this.hide();
};
Calendar.prototype.onChangeYear = function(isnext)
{
var _year = this.date.getFullYear();
var _month = this.date.getMonth() 1;
var _date = this.date.getDate();
if(_year > 999 && _year {
if(isnext){_year ;}else{ _year --;}
}
else
{
{
{
{
{
{
{
{
{
alert("年份超出範圍(1000-9999)!");
}
this.bindDate(_year '-' _month '-' _date);
};
Calendar.prototype.onChangeMonth = function(isnext)
{
var _year = this.date.getFullYear();
var _month = this.date.getMonth() 1;
var _date = this.date.getDate();
if(isnext){ _month ;} else {_month--;}
if(_year > 999 && _year {
if(_month if(_month > 12) {_month = 1; _year ;}
}
else
{
alert("年份超出範圍(1000-9999)!");
}
this.bindDate(_year '-' _month '-' _date);
};
Calendar.prototype.showMenu = function(isyear)
{
var _menu = getObjById("cdrMenu");
if(isyear != null)
{
var _obj = (isyear)? getObjById("當前年份") : getObjById("當前年份");
if(isyear)
{
this.getYearMenu(this.date.getFullYear() - 5);
}
其他
{
this.getMonthMenu();
}
_menu.style.top = (_obj.offsetTop _obj.offsetHeight) 'px';
_menu.style.left = _obj.offsetLeft 'px';
_menu.style.width = _obj.offsetWidth 'px';
}
if (this.timer != null)clearTimeout(this.timer);
_menu.style.display="";
}
Calendar.prototype.hideMenu = function()
{
var _obj = getObjById("cdrMenu");
this.timer = window.setTimeout(function(){_obj.style.display='none';},500);
}
Number.prototype.NaN0 = function()
{
return isNaN(this) ? 0:這個;
}
Date.prototype.toFormatString = function(fs)
{
if(fs.length == 1)
{
return this.getFullYear() fs (this.getMonth() 1) fs this.getDate();
}
fs = fs.replace("yyyy",this.getFullYear());
fs = fs.replace("mm",(this.getMonth() 1));
fs = fs.replace("dd",this.getDate());
回傳fs;
}
var inputObj = null;
var targetObj = null;
var DragObj = null;
var mouseOffset = null;
function getObjById(obj)
{
if(document.getElementByIdx_x)
{
return document.getElementByIdx_x(obj);
}
else
{
alert("瀏覽器不支援!");
}
}
function mouseCoords(ev)
{
if(ev.pageX || ev.pageY){
return {x:ev.pageX, y:ev.第Y頁};
}
return {
x:ev.clientX document.body.scrollLeft - document.body.clientLeft,
y:ev.clientY document.body.scrollTop - 文件。 body.clientTop
};
}
函數getPosition(e)
{
var left = 0;
var 頂部 = 0;
while (e.offsetParent){
left = e.offsetLeft (e.currentStyle?(parseInt(e.currentStyle.borderLeftWidth)).NaN0():0);
top = e.offsetTop(e.currentStyle?(parseInt(e.currentStyle.borderTopWidth)).NaN0():0);
e = e.offsetParent;
}
left = e.offsetLeft (e.currentStyle?(parseInt(e.currentStyle.borderLeftWidth)).NaN0():0);
top = e.offsetTop(e.currentStyle?(parseInt(e.currentStyle.borderTopWidth)).NaN0():0);
返回{x:左,y:上};
}
函數 getMouseOffset(target, ev)
{
ev = ev ||視窗.事件;
var docPos = getPosition(target);
var mousePos = mouseCoords(ev);
返回{x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
}
函數 closeCalendar(evt){
evt = evt ||視窗.事件;
var _target= evt.target || evt.srcElement;
if(!_target.getAttribute("作者") && _target != inputObj && _target != targetObj)
{
getObjById("Calendar").style.display = "none";
}
}
函數dragStart(evt){
evt = evt ||視窗.事件;
var _target= evt.target || evt.srcElement;
if(_target.getAttribute("作者") == "alin_bar")
{
dragObj = getObjById("日曆");
mouseOffset = getMouseOffset(dragObj, evt);
}
}
函數拖曳(evt)
{
evt = evt ||視窗.事件;
if(dragObj)
{
var mousePos = mouseCoords(evt);
dragObj.style.left = (mousePos.x - mouseOffset.x) 'px';
dragObj.style.top = (mousePos.y - mouseOffset.y) 'px';
}
}
//拖曳結束
function DragEnd(evt) { dragObj = null; } document.onclick = closeCalendar; document.onmousedown=dragStart; document.onmousemove = 拖曳; document.onmouseup = DragEnd;
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn