另一个简单点的日历控件
来源:互联网 发布:立体包装软件 编辑:程序博客网 时间:2024/05/17 21:53
别人做的,觉得有点意思,贴出来共享一下,如果您觉得代码涉及侵权,请通知我,我马上删除:
有两个文件,calendar.htm,calendar.js。
这是calendar.js的代码:
document.write('<iframe id=CalFrame name=CalFrame frameborder=0 src=Script/calendar/calendar.htm style=display:none;position:absolute;z-index:100></iframe>');
document.onclick=hideCalendar;
function showCalendar(sImg,bOpenBound,sFld1,sNextP,sNextD,sStartD,sEndD,sVD,sOE,sVDE,sOT,s3F,sFld2,sCallback,sNextVDE)
{
//1.sImg日历弹出位置的控件的名称,
//2.bOpenBound,
//3.sFld1取得日期的控件名称,
//4.sNextP选取日期后新日历弹出的位置的控件名称,可不输入,
//5.sNextD选取日期后新日历弹出从中取值的控件名称,可不输入,
//6.sStartD开始有效时间,
//7.sEndD截至有效时间,
//8.sVD周几有效,例如:'1,3,5',注意星期日应输入'0'
//9.sOE,单双日有效,'0'表示双日,'1'表示单日
//10.sVDE特殊日期,例如'2004-10-11,2004-11-20,',最后一定要输入','
//11.sOT如果是直接在文本框中点击'text',
//12.s3F下一个日历弹出并选择后点取日期后定位到新的控件
//sFld2,弹出日历默认日期
//sCallback
// sNextVDE 下一次焦点的有效时间.
var fld1,fld2;
var cf=document.getElementById("CalFrame");
var wcf=window.frames.CalFrame;
var oImg=document.getElementById(sImg);
if(!oImg){alert("控制对象不存在!");return;}
if(!sFld1){alert("输入控件未指定!");return;}
fld1=document.getElementById(sFld1);
if(!fld1){alert("输入控件不存在!");return;}
if(fld1.tagName!="INPUT"||fld1.type!="text"){alert("输入控件类型错误!");return;}
if(sFld2)
{
fld2=document.getElementById(sFld2);
if(!fld2){alert("参考控件不存在!");return;}
if(fld2.tagName!="INPUT"||(fld2.type!="text"&&fld2.type!="hidden")){alert("参考控件类型错误!");return;}
}
if(!wcf.bCalLoaded){alert("日历未成功装载!请刷新页面!");return;}
wcf.n_position=sNextP;
wcf.n_textdate=sNextD;
wcf.startdate=sStartD;
wcf.enddate=sEndD;
wcf.vailidday=sVD;
wcf.oddeven=sOE;
wcf.vailiddate=sVDE;
wcf.nextvailiddate = sNextVDE;
wcf.objecttype=sOT;
wcf.thirdfocus=s3F;
if(cf.style.display=="block"){cf.style.display="none";return;}
var eT=0,eL=0,p=oImg;
var sT=document.body.scrollTop,sL=document.body.scrollLeft;
var eH=oImg.height,eW=oImg.width;
while(p&&p.tagName!="BODY"){eT+=p.offsetTop;eL+=p.offsetLeft;p=p.offsetParent;}
if(sOT=="text")
{
cf.style.top=+(document.body.clientHeight-(eT-sT)-eH>=cf.height)?eT+eH+20:eT-cf.height;
}
else
{
cf.style.top=(document.body.clientHeight-(eT-sT)-eH>=cf.height)?eT+eH:eT-cf.height;
}
cf.style.left=(document.body.clientWidth-(eL-sL)>=cf.width)?eL:eL+eW-cf.width;
cf.style.display="block";
wcf.openbound=bOpenBound;
wcf.fld1=fld1;
wcf.fld2=fld2;
wcf.callback=sCallback;
wcf.initCalendar();
}
function hideCalendar()
{
var cf=document.getElementById("CalFrame");
cf.style.display="none";
}
这是calendar.htm源码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0056)http://www.elong.com/hotels/Script/calendar/calendar.htm -->
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>TD {
FONT-SIZE: 12px; FONT-FAMILY: arial; TEXT-ALIGN: center
}
TD.dt {
FONT-SIZE: 11px; FONT-FAMILY: arial; TEXT-ALIGN: center
}
A {
COLOR: blue
}
A:hover {
COLOR: red
}
A.bt {
COLOR: #888888
}
</STYLE>
<SCRIPT language=javascript>
<!--//
var str='',i,j,yy,mm,openbound,callback;
var fld1,fld2;
var wp=window.parent;
var cf=wp.document.getElementById("CalFrame");
var fld,curday,sd,ed,today=new Date();
var n_position,n_textdate,startdate,enddate,vailidday,oddeven,vailiddate,nextvailiddate,objecttype,mmm,ddd,thirdfocus;
mmm="";
today.setHours(0);today.setMinutes(0);today.setSeconds(0);today.setMilliseconds(0);
//var lastyear=today.getYear(),lastmonth=today.getMonth();
function parseDate(s)//解析日期
{
var reg=new RegExp("[^0-9-]","")
if(s.search(reg)>=0)return today;
var ss=s.split("-");
if(ss.length!=3)return today;
if(isNaN(ss[0])||isNaN(ss[1])||isNaN(ss[2]))return today;
return new Date(parseFloat(ss[0]),parseFloat(ss[1])-1,parseFloat(ss[2]));
}
function resizeCalendar(){cf.width=144;cf.height=192;}//设定日历宽高
function initCalendar()//初始化
{
curday=today;
if(fld1&&fld1.value.length>0){curday=parseDate(fld1.value);}
if(fld2&&fld2.value.length>0){curday=parseDate(fld2.value);}
if (!startdate==""){sd=parseDate(startdate)}
if (!enddate==""){ed=parseDate(enddate)}
//window.alert(startdate);
//window.alert(enddate);
drawCalendar(curday.getFullYear(),curday.getMonth());
}
function drawCalendar(y,m)//画日历
{
var x=new Date(y,m,1),mv=x.getDay(),d=x.getDate(),de;
yy=x.getFullYear();mm=x.getMonth();
document.getElementById("yyyymm").innerHTML=yy+"."+(mm+1>9?mm+1:"0"+(mm+1));
//清空日历
for(var i=1;i<=mv;i++)
{
de=document.getElementById("d"+i);
de.innerHTML="";
de.bgColor="";
}
//画日历
while(x.getMonth()==mm)
{
de=document.getElementById("d"+(d+mv));
if(x.getTime()==curday.getTime())
de.bgColor="#dddddd";
else
de.bgColor="#DEF1F8";
if(x.getTime()==today.getTime())
{
//window.alert(1);
if(ifDraw(x))
{
de.innerHTML="<a href=javascript:setDate("+d+");><font color=red>"+d+"</font></a>";
}
else
{
de.innerHTML="<a href=javascript:setDate("+d+");><img src=./icon/date"+d+".gif border=0></a>";
//de.innerHTML="<img src=./d.jpg border=0>";
//de.innerHTML="<a href=javascript:setDate("+d+");><font COLOR=#FF0000> X </font></a>";
}
}
else if(x.getTime()<today.getTime())
{
//window.alert(2);
if(ifDraw(x))
{
if(openbound){de.innerHTML="<a href=javascript:setDate("+d+"); class=bt>"+d+"</a>";}
else{de.innerHTML="<font color=#888888>"+d+"</font>";}
}
else
{
de.innerHTML="<a href=javascript:setDate("+d+");><img src=./icon/date"+d+".gif border=0></a>";
//de.innerHTML="<img src=./d.jpg border=0>";
// de.innerHTML="<a href=javascript:setDate("+d+");><font COLOR=#FF0000> X </font></a>";
}
}
else
{
//window.alert(3);
if(ifDraw(x))
{
de.innerHTML="<a href=javascript:setDate("+d+");>"+d+"</a>";
}
else
{
de.innerHTML="<a href=javascript:setDate("+d+");><img src=./icon/date"+d+".gif border=0></a>";
//de.innerHTML="<img src=./d.jpg border=0>";
//de.innerHTML="<a href=javascript:setDate("+d+");><font COLOR=#FF0000> X </font></a>";
}
}
x.setDate(++d);
}
while(d+mv<=42)
{
de=document.getElementById("d"+(d+mv));
de.innerHTML="";
de.bgColor="";
d++;
}
}
function ifDraw(xd)
{
if(!startdate==""&&!enddate=="")
{
if(xd.getTime()>=sd.getTime()&&xd.getTime()<=ed.getTime())
{
if(returnOE(xd)&&returnVD(xd)&&returnVDE(xd))
{
return true
}
else
{
return false
}
}
else
{
return false;
}
}
else
{
if(returnOE(xd)&&returnVD(xd)&&returnVDE(xd))
{
return true
}
else
{
return false
}
}
}
function returnOE(xd)
{
if(!oddeven=="")
{
if(oddeven=="0")
{
if(xd.getDate()%2==0)
{
return true;
}
else
{
return false;
}
}
else
{
if(!(xd.getDate()%2==0))
{
return true;
}
else
{
return false;
}
}
}
else
{
return true;
}
}
function returnVD(xd)
{
if(!vailidday=="")
{
if(vailidday.indexOf(xd.getDay().toString())>=0)
{
return true;
}
else
{
return false;
}
}
else
{
return true;
}
}
function returnVDE(xd)
{
if(!vailiddate=="")
{
if(vailiddate.indexOf(xd.getYear().toString()+"-"+(xd.getMonth()+1).toString()+"-"+xd.getDate().toString()+",")>=0)
{
return true;
}
else
{
return false;
}
}
else
{
return true;
}
}
function setDate(d)//设置日期
{
wp.hideCalendar();
/*
if(mm.toString().length==1)
{
mmm="0"+(mm+1).toString();
}
else
{
mmm=mm+1;
}
if(d.toString().length==1)
{
ddd="0"+d.toString();
}
else
{
ddd=d;
}
var dstr=yy+"-"+(mmm)+"-"+ddd;
*/
mmm=mm+1;
var dstr=yy+"-"+(mmm)+"-"+d;
if(callback&&callback.length>0){eval("wp."+callback+"(/""+dstr+"/")");}
else{fld1.value=dstr;}
if(!n_position==""&&!n_textdate=="")
{
//wp.document.getElementById(n_textdate).value="";
wp.showCalendar(n_position,false,n_textdate,'','',startdate,enddate,vailidday,oddeven,nextvailiddate,objecttype,thirdfocus,fld1.id,true);
}
else
{
if(!thirdfocus=="")
{
otd=wp.document.getElementById(thirdfocus);
otd.focus();
}
}
//hideCalendar();
}
//-->
</SCRIPT>
<META content="MSHTML 6.00.2900.2668" name=GENERATOR></HEAD>
<BODY bgColor=white leftMargin=0 topMargin=0 onload=resizeCalendar();
marginheight="0" marginwidth="0">
<TABLE id=tbl0 cellSpacing=0 cellPadding=1 bgColor=#7db6c7 border=0>
<TBODY>
<TR>
<TD>
<TABLE cellSpacing=1 cellPadding=2 width="100%" bgColor=white border=0>
<TBODY>
<TR bgColor=#7db6c7>
<TD id=prev width=16><A
href="javascript:drawCalendar(yy,mm-1);"><IMG height=16
src="./icon/prev.gif" width=16 border=0></A></TD>
<TD id=yyyymm style="FONT-SIZE: 12px; COLOR: white" width="99%"></TD>
<TD id=next width=16><A
href="javascript:drawCalendar(yy,mm+1);"><IMG height=16
src="./icon/next.gif" width=16
border=0></A></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=142 bgColor=#def1f8 border=0>
<TBODY>
<TR bgColor=#ffffff height=18>
<TD width=18 bgColor=#ffffff>日</TD>
<TD width=18 bgColor=#ffffff>一</TD>
<TD width=18 bgColor=#ffffff>二</TD>
<TD width=18 bgColor=#ffffff>三</TD>
<TD width=18 bgColor=#ffffff>四</TD>
<TD width=18 bgColor=#ffffff>五</TD>
<TD width=18 bgColor=#ffffff>六</TD></TR>
<TR height=1>
<TD bgColor=#def1f8 colSpan=7></TD></TR>
<SCRIPT language=javascript>
<!--//
for(i=0;i<6;i++)
{
str+="<tr height=18>";
for(j=1;j<=7;j++)str+="<td id=d"+(i*7+j)+" bgColor='#DEF1F8'></td>";
str+="</tr>";
}
document.write(str);
//-->
</SCRIPT>
<TR height=18>
<TD bgColor=#def1f8 colSpan=7> </TD></TR>
<TR bgColor=#7db6c7 height=20>
<TD colSpan=7><A
style="FONT-SIZE: 12px; COLOR: white; TEXT-DECORATION: none"
href="javascript:wp.hideCalendar();">关闭窗口</A></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<SCRIPT language=javascript>
<!--//
var bCalLoaded=true;
//-->
</SCRIPT>
</BODY></HTML>
TD {FONT-SIZE: 12px; FONT-FAMILY: arial; TEXT-ALIGN: center}TD.dt {FONT-SIZE: 11px; FONT-FAMILY: arial; TEXT-ALIGN: center}A {COLOR: blue}A:hover {COLOR: red}A.bt {COLOR: #888888}TD {FONT-SIZE: 12px; FONT-FAMILY: arial; TEXT-ALIGN: center}TD.dt {FONT-SIZE: 11px; FONT-FAMILY: arial; TEXT-ALIGN: center}A {COLOR: blue}A:hover {COLOR: red}A.bt {COLOR: #888888}
- 另一个简单点的日历控件
- 一个简单的日历控件
- 一个简单的日历控件
- 一个简单的日历控件
- My97DatePicker 日历控件的简单用法
- 一个简单的Silverlight自定义日历控件
- JQuery 日历控件Datepicker的简单使用
- 最简单的自定义日历控件
- My97DatePicker日历控件的简单用法
- iOS之自定义简单的日历控件
- JQuery简单日历控件
- My97DatePicker日历控件简单使用
- AjaxControlToolKit ----CalendarExtender(日历扩展控件)的简单使用方法
- 重新整理一个简单的JS日历控件
- .NET的Calendar控件+AJAX打造简单版日历备忘录
- 在iOS上实现一个简单的日历控件
- 在iOS上实现一个简单的日历控件
- 在iOS上实现一个简单的日历控件
- 高级程序员考试时间安排和参考书推荐
- 程序设计考试大纲(高级程序员级)
- 去掉“点击图片链接后的那个四方虚线框”的方法!
- C#做的一个加密/解密的类
- 格瑞思特招.net网页程序员(C#)(急聘)
- 另一个简单点的日历控件
- C# Coding Standard
- CString操作指南(转自www.vckbase.com)
- 一些VC例子的代码--编辑框
- 111
- [求救]关于Delphi中控件的拖放(初次使用Delphi,望高人指点)
- 一个C++语法问题。
- 开始了解 PHP V5 中的对象
- Thinking in Java第三版读书笔记-第一章:对象简介