`
tiandirensoon
  • 浏览: 594381 次
文章分类
社区版块
存档分类
最新评论

好多Javascript日期选择器呀-5

 
阅读更多
<HTML>
<HEAD>
<TITLE>最精致的日历式日期输入控件(SmartVer1.00)</TITLE>
</HEAD>
<style>
body
{
font-size:12px;
font-family:"Tahoma";
}
td
{
font-size:12px;
font-family:"Tahoma";
}
.inputdate
{
border:1pxsolid#7287c6;
text-align:center;
font-size:12px;
font-style:normal;
height:16px;
}
</style>
<SCRIPTLANGUAGE="JavaScript">
<!--
/********************************************************************
morejavascriptfrom<ahref="http://www.smallrain.net"target="_blank">http://www.smallrain.net</a>
时间:2004-01-01
作者:Smart
功能:日历式日期选择控件

参数:
说明:
1.输入框直接调用用以下代码
<Script>DateBox("InputName","DateValue")<//Script>
其中:InputName为输入日期的文本框.注:不能为空.
DateValue为输入日期的文本框默认日期值.格式为:YYYY-MM-DD.如2004-01-01
此值可以不填或为空.则默认值为当天日期.(客户端)
2.其它"按钮"调用用以下代码
CallDate("InputName")
其中:InputName为输入日期的文本框.注:不能为空.
修改区
时间:
修改人:
原因:
********************************************************************/
/*基本参数*/
varFrw=106;//日历宽度
varFrh=137;//日历高度
varFrs=4;//影子大小
varHid=true;//日历是否打开
/*创建框架*/
document.writeln('<Divid=CalendarAuthor=smartscrolling="no"frameborder=0style="border:0pxsolid#EEEEEE;position:absolute;width:'+Frw+';height:'+Frh+';z-index:0;filter:/'progid:DXImageTransform.Microsoft.Shadow(direction=135,color=#AAAAAA,strength='+Frs+')/';display:none"></Div>');
/*取得今日日期*/
functionGetTodayDate()
{
today=newDate();
y=today.getYear();
m=(today.getMonth()+1);
if(m<10)
{
m='0'+m;
}
d=today.getDate();
if(d<10)
{
d='0'+d;
}
returny+'-'+m+'-'+d
}
/*输入今天日期*/
functionSetTodayDate(InputBox)
{
HiddenCalendar();
InputBox.value=GetTodayDate();
}
/*取某年某月第一天的星期值(月份-1)*/
functionGetFirstWeek(The_Year,The_Month)
{
return(newDate(The_Year,The_Month-1,1)).getDay()
}
/*取某年某月中总天数*/
functionGetThisDays(The_Year,The_Month)
{
return(newDate(The_Year,The_Month,0)).getDate()
}
/*取某年某月上个月中总天数*/
functionGetLastDays(The_Year,The_Month)
{
return(newDate(The_Year,The_Month-1,0)).getDate()
}
/*判断是否是闰年*/
functionRunNian(The_Year)
{
if((The_Year%400==0)||((The_Year%4==0)&&(The_Year%100!=0)))
returntrue;
else
returnfalse;
}
/*判断日期(YYYY-MM-DD)的日期是否正确*/
functionDateIsTrue(asDate){
varlsDate=asDate+"";
varloDate=lsDate.split("-");
if(loDate.length!=3)returnfalse;
varliYear=parseFloat(loDate[0]);
varliMonth=parseFloat(loDate[1]);
varliDay=parseFloat(loDate[2]);
if((loDate[0].length>4)||(loDate[1].length>2)||(loDate[2].length>2))returnfalse;
if(isNaN(liYear)||isNaN(liMonth)||isNaN(liDay))returnfalse;
if((liYear<1800)||(liYear>2500))returnfalse;
if((liMonth>12)||(liMonth<=0))returnfalse;
if(GetThisDays(liYear,liMonth)<liDay)returnfalse;
return!isNaN(Date.UTC(liYear,liMonth,liDay));
}
/*取某年某月的周值*/
functionGetCountWeeks(The_Year,The_Month)
{
varAllday;
Allday=0;
if(The_Year>2000)
{

for(i=2000;i<The_Year;i++)
if(RunNian(i))
Allday+=366;
else
Allday+=365;
for(i=2;i<=The_Month;i++)
{
switch(i)
{
case2:
if(RunNian(The_Year))
Allday+=29;
else
Allday+=28;
break;
case3:Allday+=31;break;
case4:Allday+=30;break;
case5:Allday+=31;break;
case6:Allday+=30;break;
case7:Allday+=31;break;
case8:Allday+=31;break;
case9:Allday+=30;break;
case10:Allday+=31;break;
case11:Allday+=30;break;
case12:Allday+=31;break;
}
}
}
return(Allday+6)%7;
}
/*输入框显示*/
functionInputValue(InputBox,Year,Month,Day)
{
if(Month<10)
{
Month='0'+Month
}
if(Day<10)
{
Day='0'+Day
}
InputBox.value=Year+"-"+Month+"-"+Day
}
//上一月
functionForwardMonth(InputBox,Year,Month,Day)
{
Month=Month-1;
if(Month<1)
{
Month=12;
Year=Year-1;
if(Year<1800)
Year=2500;
}
Day=((GetThisDays(Year,Month)<Day)?GetThisDays(Year,Month):Day)
Hid=false;
ShowCalendar(InputBox,Year,Month,Day)
}
//下一月
functionNextMonth(InputBox,Year,Month,Day)
{
Month=Month+1;
if(Month>12)
{
Month=1;
Year=Year+1;
if(Year>2500)
Year=1800;
}
Day=((GetThisDays(Year,Month)<Day)?GetThisDays(Year,Month):Day)
Hid=false;
ShowCalendar(InputBox,Year,Month,Day)
}
//上一年
functionForwardYear(InputBox,Year,Month,Day)
{
Year=Year-1;
if(Year<1800)
Year=2500;
Day=((GetThisDays(Year,Month)<Day)?GetThisDays(Year,Month):Day)
Hid=false;
ShowCalendar(InputBox,Year,Month,Day)
}
//下一年
functionNextYear(InputBox,Year,Month,Day)
{
Year=Year+1;
if(Year>2500)
Year=1800;
Day=((GetThisDays(Year,Month)<Day)?GetThisDays(Year,Month):Day)
Hid=false;
ShowCalendar(InputBox,Year,Month,Day)
}
/*其它事件显示日历*/
functionOpenDate(where)
{
GetCalendar(where)
}
/*根据输入框中的日期显示日历*/
functionGetCalendar(where)
{
Hid=false;
varBox_Name=where.name;
varBox_value=where.value;
if(DateIsTrue(Box_value))
{
loDate=Box_value.split("-");
Y=parseFloat(loDate[0]);
M=parseFloat(loDate[1]);
D=parseFloat(loDate[2]);
ShowCalendar(where,Y,M,D);
}
else
{
today=newDate();
y=today.getYear();
m=(today.getMonth()+1);
d=today.getDate();
ShowCalendar(where,y,m,d);
}
}
/*隐藏日历*/
functionHiddenCalendar()
{
document.all.Calendar.style.display="none";
}
functionCloseCalendar()
{
if(Hid)
document.all.Calendar.style.display="none";
Hid=true;
}
/*显示日历*/
functionShowCalendar(InputBox,The_Year,The_Month,The_Day)
{
varNow_Year=(The_Year==null?2004:The_Year);
varNow_Month=(The_Month==null?1:The_Month);
varNow_Day=(The_Day==null?1:The_Day);
varBox_Name='window.parent.document.all.'+InputBox.name;
varfw=GetFirstWeek(Now_Year,Now_Month);
varld=GetLastDays(Now_Year,Now_Month);
vartd=GetThisDays(Now_Year,Now_Month);
varisnd=false;//是否是下个月的日期
vard=1,w=1;
varFrameContent;
varFrl,Frt,Winw,Winh;
/*显示的位置*/
Winw=document.body.offsetWidth;
Winh=document.body.offsetHeight;
Frl=InputBox.getBoundingClientRect().left-2;
Frt=InputBox.getBoundingClientRect().top+InputBox.clientHeight;
if(((Frl+Frw+Frs)>Winw)&&(Frw+Frs<Winw))
Frl=Winw-Frw-Frs;
if((Frt+Frh+Frs>Winh)&&(Frh+Frs<Winh))
Frt=Winh-Frh-Frs;
document.all.Calendar.style.display="";
document.all.Calendar.style.left=Frl;
document.all.Calendar.style.top=Frt;
//显示日历内容
FrameContent="/n<tableonselectstart=/"returnfalse;/"border='0'cellpadding='0'cellspacing='0'bgcolor='#395592'width='100%'height='15'style=/"color:white;font-weight:bolder;border:0pxsolid/">"+"/n<tr>/n";
FrameContent+="<tdwidth=8>";
FrameContent+="<imgsrc='inc/-.gif'width='8'height='11'border='0'alt='上一年'style='cursor:hand'onclick=/"parent.ForwardYear(window.parent.document.all."+InputBox.name+","+Now_Year+","+Now_Month+","+Now_Day+")/">";
FrameContent+="</td>/n";
FrameContent+="<tdvAlign=middlealign='center'>";
FrameContent+=Now_Year;
FrameContent+="年";
FrameContent+="</td>/n";
FrameContent+="<tdwidth=8>";
FrameContent+="<imgsrc='inc/+.gif'width='8'height='11'border='0'alt='下一年'style='cursor:hand'onclick=/"parent.NextYear(window.parent.document.all."+InputBox.name+","+Now_Year+","+Now_Month+","+Now_Day+")/">";
FrameContent+="</td>/n";
FrameContent+="<tdwidth=8>";
FrameContent+="<imgsrc='inc/-.gif'width='8'height='11'border='0'alt='上一月'style='cursor:hand'onclick=/"parent.ForwardMonth(window.parent.document.all."+InputBox.name+","+Now_Year+","+Now_Month+","+Now_Day+")/">";
FrameContent+="</td>/n";
FrameContent+="<tdvAlign=middlealign='center'width='16'>";
FrameContent+=Now_Month;
FrameContent+="</td>/n";
FrameContent+="<tdvAlign=middlealign='center'width='13'>";
FrameContent+="月";
FrameContent+="</td>/n";
FrameContent+="<tdwidth=8>";
FrameContent+="<imgsrc='inc/+.gif'width='8'height='11'border='0'alt='下一月'style='cursor:hand'onclick=/"parent.NextMonth(window.parent.document.all."+InputBox.name+","+Now_Year+","+Now_Month+","+Now_Day+")/">";
FrameContent+="</td>"+"/n";
FrameContent+="</tr>"+"/n";
FrameContent+="</table>"+"/n";
FrameContent+="<tableonselectstart=/"returnfalse;/"border='0'cellpadding='0'cellspacing='1'width='100%'bgcolor='#CCCCCC'>"+"/n";
FrameContent+="<trbgcolor='#F5F5F5'>"+"/n";
FrameContent+="<td><center>一</center></td>"+"/n";
FrameContent+="<td><center>二</center></td>"+"/n";
FrameContent+="<td><center>三</center></td>"+"/n";
FrameContent+="<td><center>四</center></td>"+"/n";
FrameContent+="<td><center>五</center></td>"+"/n";
FrameContent+="<td><center>六</center></td>"+"/n";
FrameContent+="<td><center><fontcolor='#FF0000'>日</font></center></td>"+"/n";
FrameContent+="</tr>"+"/n";
//如果本月第一天是星期一或星期天.应加上七.保证可以看到上个月的日期
if(fw<2)
tf=fw+7;
else
tf=fw;
FrameContent+="<trbgcolor='#FFFFFF'>"+"/n";
//第一行上月日期
for(l=(ld-tf+2);l<=ld;l++)
{
FrameContent+="<tdonclick=/"parent.ForwardMonth(window.parent.document.all."+InputBox.name+","+Now_Year+","+Now_Month+","+l+")/"style='cursor:hand'><center><fontcolor='#BBBBBB'>"+l+"</font></center></td>"+"/n";
w++;
}
//第一行本月日期
for(f=tf;f<=7;f++)
{
//星期天但非输入日期
if(((w%7)==0)&&(d!=Now_Day))
FrameContent+="<tdonMouseOver=/"this.style.background=/'#E1E1E1/'/"onMouseOut=/"this.style.background=/'#FFFFFF/'/"onClick=/"parent.InputValue(window.parent.document.all."+InputBox.name+","+Now_Year+","+Now_Month+","+d+");parent.HiddenCalendar()/"style='cursor:hand'><center><fontcolor='#FF0000'>"+d+"</font></center></td>"+"/n";
//日期为输入日期
elseif(d==Now_Day)
FrameContent+="<tdstyle=/"background:#420042;cursor:hand/"onClick=/"parent.InputValue(window.parent.document.all."+InputBox.name+","+Now_Year+","+Now_Month+","+d+");parent.HiddenCalendar()/"><center><fontcolor='#FFFFFF'>"+d+"</font></center></td>"+"/n";
//其它
else
FrameContent+="<tdonMouseOver=/"this.style.background=/'#E1E1E1/'/"onMouseOut=/"this.style.background=/'#FFFFFF/'/"onClick=/"parent.InputValue(window.parent.document.all."+InputBox.name+","+Now_Year+","+Now_Month+","+d+");parent.HiddenCalendar()/"style='cursor:hand'><center>"+d+"</center></td>"+"/n";
d++;
w++;
}
FrameContent+="</tr>"+"/n";
w=1;
for(i=2;i<7;i++)
{
FrameContent+="<trbgcolor='#FFFFFF'>"+"/n";
for(j=1;j<8;j++)
{
if(isnd)//下个月的日期
FrameContent+="<tdstyle='cursor:hand'onclick=/"parent.NextMonth(window.parent.document.all."+InputBox.name+","+Now_Year+","+Now_Month+","+d+")/"><center><fontcolor='#BBBBBB'>"+d+"</font></center></td>"+"/n";
else//本月的日期
{
//星期天但非输入日期
if(((w%7)==0)&&(d!=Now_Day))
FrameContent+="<tdonMouseOver=/"this.style.background=/'#E1E1E1/'/"onMouseOut=/"this.style.background=/'#FFFFFF/'/"onClick=/"parent.InputValue(window.parent.document.all."+InputBox.name+","+Now_Year+","+Now_Month+","+d+");parent.HiddenCalendar()/"style='cursor:hand'><center><fontcolor='#FF0000'>"+d+"</font></center></td>"+"/n";
//日期为输入日期
elseif(d==Now_Day)
FrameContent+="<tdstyle=/"background:#420042;cursor:hand/"onClick=/"parent.InputValue(window.parent.document.all."+InputBox.name+","+Now_Year+","+Now_Month+","+d+");parent.HiddenCalendar()/"><center><fontcolor='#FFFFFF'>"+d+"</font></center></td>"+"/n";
//其它
else
FrameContent+="<tdonMouseOver=/"this.style.background=/'#E1E1E1/'/"onMouseOut=/"this.style.background=/'#FFFFFF/'/"onClick=/"parent.InputValue(window.parent.document.all."+InputBox.name+","+Now_Year+","+Now_Month+","+d+");parent.HiddenCalendar()/"style='cursor:hand'><center>"+d+"</center></td>"+"/n";
}
//判断是否为本月的日期
if(d==td)
{
isnd=true;
d=0;
}
w++;
d++;
}
FrameContent+="</tr>"+"/n";
}
FrameContent+="</table>"+"/n";
FrameContent+="<tableonselectstart=/"returnfalse;/"cellpadding='0'cellspacing='0'bgcolor='#F5F5F5'width='100%'height='15'>"+"/n<tr>/n";
FrameContent+="<tdtitle=/"今日:"+GetTodayDate()+"/"style=/"cursor:hand/"onclick=/"parent.SetTodayDate(window.parent.document.all."+InputBox.name+")/">";
FrameContent+="<fontcolor=red>今日:</font>"+GetTodayDate();
FrameContent+="</td>/n";
FrameContent+="<td>";
FrameContent+="<imgsrc='inc/close.gif'width='13'height='13'border='0'alt='关闭'style='cursor:hand'onclick=/"parent.HiddenCalendar()/">";
FrameContent+="</td>/n";
FrameContent+="</tr>/n";
document.all.Calendar.innerHTML=FrameContent;
document.all.Calendar.style.display="";
}
/*显示输入框*/
functionDateBox(sBoxName,sDfltValue)
{
if(sBoxName==null)
sBoxName='Date_Box'
if((sDfltValue==null)||!(DateIsTrue(sDfltValue)))
sDfltValue=GetTodayDate()
else
{
DateStr=sDfltValue.split("-");
Y=parseFloat(DateStr[0]);
M=(parseFloat(DateStr[1])<10)?('0'+parseFloat(DateStr[1])):parseFloat(DateStr[1]);
D=(parseFloat(DateStr[2])<10)?('0'+parseFloat(DateStr[2])):parseFloat(DateStr[2]);
sDfltValue=Y+'-'+M+'-'+D
}
document.write("<inputsize='10'readonlyclass='inputdate'name='"+sBoxName+"'value='"+sDfltValue+"'onclick='GetCalendar(window.document.all."+sBoxName+")'>");
}
document.onclick=CloseCalendar;
//-->
</SCRIPT>
<BODYtopmargin="0"leftmargin="0">
点击输入框调用日历.<Script>DateBox("Test1")</Script>

<Script>DateBox("Test2","2004-01-01")</Script>
其它事件调用日历.
<inputtype="text"class="inputdate"size="10"name="Test3"readonly>
<inputtype="button"class="inputdate"onclick="OpenDate(Test3)"value="显示日历">
</BODY>
</HTML>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics