`

最精致的日历式日期输入控件 (Smart Ver 1.00)

 
阅读更多
<HTML>
<HEAD>
<TITLE>最精致的日&#21382;式日期&#36755;入控件 (Smart Ver 1.00)</TITLE>
</HEAD>
<style>
body
{
font-size:12px;
font-family:"Tahoma";
}
td
{
font-size:12px;
font-family:"Tahoma";
}
.inputdate
{
border:1px solid #7287c6;
text-align: center;
font-size: 12px;
font-style: normal;
height: 16px;
}
</style>
<SCRIPT LANGUAGE="JavaScript">
<!--
/********************************************************************
more javascript from http://www.smallrain.net
&#26102;&#38388;:2004-01-01
作者:Smart
功能:日&#21382;式日期&#36873;&#25321;控件

参数:
&#35828;明:
1.&#36755;入框直接&#35843;用用以下代&#30721;
<Script>DateBox("InputName","DateValue")<//Script>
其中:InputName &#20026;&#36755;入日期的文本框.注:不能&#20026;空.
DateValue &#20026;&#36755;入日期的文本框默&#35748;日期&#20540;.格式&#20026;:YYYY-MM-DD.如2004-01-01
此&#20540;可以不填或&#20026;空.&#21017;默&#35748;&#20540;&#20026;当天日期.(客&#25143;端)
2.其它"按&#38062;"&#35843;用用以下代&#30721;
CallDate("InputName")
其中:InputName &#20026;&#36755;入日期的文本框.注:不能&#20026;空.
修改区
&#26102;&#38388;:
修改人:
原因:
********************************************************************/
/*基本参数*/
var Frw=106; //日&#21382;&#23485;度
var Frh=137; //日&#21382;高度
var Frs=4; //影子大小
var Hid=true;//日&#21382;是否打&#24320;
/*&#21019;建框架*/
document.writeln('<Div id=Calendar Author=smart scrolling="no" frameborder=0 style="border:0px solid #EEEEEE ;position: absolute; width: '+Frw+'; height: '+Frh+'; z-index: 0; filter :/'progid:DXImageTransform.Microsoft.Shadow(direction=135,color=#AAAAAA,strength='+Frs+')/' ;display: none"></Div>');
/*取得今日日期*/
function GetTodayDate()
{
today= new Date();
y= today.getYear();
m= (today.getMonth() + 1);
if (m<10)
{
m='0'+m;
}
d= today.getDate();
if (d<10)
{
d='0'+d;
}
return y+'-'+m+'-'+d
}
/*&#36755;入今天日期*/
function SetTodayDate(InputBox)
{
HiddenCalendar();
InputBox.value=GetTodayDate();
}
/*取某年某月第一天的星期&#20540;(月&#20221;-1)*/
function GetFirstWeek(The_Year,The_Month)
{
return (new Date(The_Year,The_Month-1,1)).getDay()
}
/*取某年某月中&#24635;天数*/
function GetThisDays(The_Year,The_Month)
{
return (new Date(The_Year,The_Month,0)).getDate()
}
/*取某年某月上个月中&#24635;天数*/
function GetLastDays(The_Year,The_Month)
{
return (new Date(The_Year,The_Month-1,0)).getDate()
}
/*判断是否是&#38384;年*/
function RunNian(The_Year)
{
if ((The_Year%400==0) || ((The_Year%4==0) && (The_Year%100!=0)))
return true;
else
return false;
}
/* 判断日期(YYYY-MM-DD)的日期是否正&#30830; */
function DateIsTrue(asDate){
var lsDate = asDate + "";
var loDate = lsDate.split("-");
if (loDate.length!=3) return false;
var liYear = parseFloat(loDate[0]);
var liMonth = parseFloat(loDate[1]);
var liDay = parseFloat(loDate[2]);
if ((loDate[0].length>4)||(loDate[1].length>2)||(loDate[2].length>2)) return false;
if (isNaN(liYear)||isNaN(liMonth)||isNaN(liDay)) return false;
if ((liYear<1800)||(liYear>2500)) return false;
if ((liMonth>12)||(liMonth<=0)) return false;
if (GetThisDays(liYear,liMonth)<liDay) return false;
return !isNaN(Date.UTC(liYear,liMonth,liDay));
}
/*取某年某月的周&#20540;*/
function GetCountWeeks(The_Year,The_Month)
{
var Allday;
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)
{
case 2 :
if (RunNian(The_Year))
Allday += 29;
else
Allday += 28;
break;
case 3 : Allday += 31; break;
case 4 : Allday += 30; break;
case 5 : Allday += 31; break;
case 6 : Allday += 30; break;
case 7 : Allday += 31; break;
case 8 : Allday += 31; break;
case 9 : Allday += 30; break;
case 10 : Allday += 31; break;
case 11 : Allday += 30; break;
case 12 : Allday += 31; break;
}
}
}
return (Allday+6)%7;
}
/*&#36755;入框&#26174;示*/
function InputValue(InputBox,Year,Month,Day)
{
if (Month<10)
{
Month='0'+Month
}
if (Day<10)
{
Day='0'+Day
}
InputBox.value=Year+"-"+Month+"-"+Day
}
//上一月
function ForwardMonth(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)
}
//下一月
function NextMonth(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)
}
//上一年
function ForwardYear(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)
}
//下一年
function NextYear(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)
}
/*其它事件&#26174;示日&#21382;*/
function OpenDate(where)
{
GetCalendar(where)
}
/*根据&#36755;入框中的日期&#26174;示日&#21382;*/
function GetCalendar(where)
{
Hid=false;
var Box_Name=where.name;
var Box_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= new Date();
y= today.getYear();
m= (today.getMonth() + 1);
d=today.getDate();
ShowCalendar(where,y,m,d);
}
}
/*&#38544;藏日&#21382;*/
function HiddenCalendar()
{
document.all.Calendar.style.display="none";
}
function CloseCalendar()
{
if (Hid)
document.all.Calendar.style.display="none";
Hid=true;
}
/*&#26174;示日&#21382;*/
function ShowCalendar(InputBox,The_Year,The_Month,The_Day)
{
var Now_Year=(The_Year==null?2004:The_Year);
var Now_Month=(The_Month==null?1:The_Month);
var Now_Day=(The_Day==null?1:The_Day);
var Box_Name='window.parent.document.all.'+InputBox.name;
var fw=GetFirstWeek(Now_Year,Now_Month);
var ld=GetLastDays(Now_Year,Now_Month);
var td=GetThisDays(Now_Year,Now_Month);
var isnd=false;//是否是下个月的日期
var d=1,w=1;
var FrameContent;
var Frl,Frt,Winw,Winh;
/*&#26174;示的位置*/
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;
//&#26174;示日&#21382;内容
FrameContent="/n<table onselectstart=/"return false;/" border='0' cellpadding='0' cellspacing='0' bgcolor='#395592' width='100%' height='15' style=/"color:white;font-weight:bolder;border:0px solid/">"+"/n<tr>/n";
FrameContent+="<td width=8>";
FrameContent+="<img src='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+="<td vAlign=middle align='center'>";
FrameContent+=Now_Year;
FrameContent+="年";
FrameContent+="</td>/n";
FrameContent+="<td width=8>";
FrameContent+="<img src='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+="<td width=8>";
FrameContent+="<img src='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+="<td vAlign=middle align='center' width='16'>";
FrameContent+=Now_Month;
FrameContent+="</td>/n";
FrameContent+="<td vAlign=middle align='center' width='13'>";
FrameContent+="月";
FrameContent+="</td>/n";
FrameContent+="<td width=8>";
FrameContent+="<img src='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+="<table onselectstart=/"return false;/" border='0' cellpadding='0' cellspacing='1' width='100%' bgcolor='#CCCCCC'>"+"/n";
FrameContent+="<tr bgcolor='#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><font color='#FF0000'>日</font></center></td>"+"/n";
FrameContent+="</tr>"+"/n";
//如果本月第一天是星期一或星期天.&#24212;加上七.保&#35777;可以看到上个月的日期
if (fw<2)
tf=fw+7;
else
tf=fw;
FrameContent+="<tr bgcolor='#FFFFFF'>"+"/n";
//第一行上月日期
for (l=(ld-tf+2);l<=ld;l++)
{
FrameContent+="<td onclick=/"parent.ForwardMonth (window.parent.document.all."+InputBox.name+","+Now_Year+","+Now_Month+","+l+")/" style='cursor:hand'><center><font color='#BBBBBB'>"+l+"</font></center></td>"+"/n";
w++;
}
//第一行本月日期
for (f=tf;f<=7;f++)
{
//星期天但非&#36755;入日期
if (((w%7)==0)&&(d!=Now_Day))
FrameContent+="<td onMouseOver=/"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><font color='#FF0000'>"+d+"</font></center></td>"+"/n";
//日期&#20026;&#36755;入日期
else if (d==Now_Day)
FrameContent+="<td style=/"background:#420042;cursor:hand/" onClick=/"parent.InputValue(window.parent.document.all."+InputBox.name+","+Now_Year+","+Now_Month+","+d+");parent.HiddenCalendar()/"><center><font color='#FFFFFF'>"+d+"</font></center></td>"+"/n";
//其它
else
FrameContent+="<td onMouseOver=/"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+="<tr bgcolor='#FFFFFF'>"+"/n";
for (j=1;j<8;j++)
{
if (isnd)//下个月的日期
FrameContent+="<td style='cursor:hand' onclick=/"parent.NextMonth (window.parent.document.all."+InputBox.name+","+Now_Year+","+Now_Month+","+d+")/"><center><font color='#BBBBBB'>"+d+"</font></center></td>"+"/n";
else//本月的日期
{
//星期天但非&#36755;入日期
if (((w%7)==0)&&(d!=Now_Day))
FrameContent+="<td onMouseOver=/"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><font color='#FF0000'>"+d+"</font></center></td>"+"/n";
//日期&#20026;&#36755;入日期
else if (d==Now_Day)
FrameContent+="<td style=/"background:#420042;cursor:hand/" onClick=/"parent.InputValue(window.parent.document.all."+InputBox.name+","+Now_Year+","+Now_Month+","+d+");parent.HiddenCalendar()/"><center><font color='#FFFFFF'>"+d+"</font></center></td>"+"/n";
//其它
else
FrameContent+="<td onMouseOver=/"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";
}
//判断是否&#20026;本月的日期
if (d==td)
{
isnd=true;
d=0;
}
w++;
d++;
}
FrameContent+="</tr>"+"/n";
}
FrameContent+="</table>"+"/n";
FrameContent+="<table onselectstart=/"return false;/" cellpadding='0' cellspacing='0' bgcolor='#F5F5F5' width='100%' height='15'>"+"/n<tr>/n";
FrameContent+="<td title=/"今日:"+GetTodayDate()+"/" style=/"cursor:hand/" onclick=/"parent.SetTodayDate(window.parent.document.all."+InputBox.name+")/">";
FrameContent+="<font color=red>今日:</font>"+GetTodayDate();
FrameContent+="</td>/n";
FrameContent+="<td>";
FrameContent+="<img src='inc/close.gif' width='13' height='13' border='0' alt='&#20851;&#38381;' style='cursor:hand' onclick=/"parent.HiddenCalendar()/">";
FrameContent+="</td>/n";
FrameContent+="</tr>/n";
document.all.Calendar.innerHTML=FrameContent;
document.all.Calendar.style.display="";
}
/*&#26174;示&#36755;入框*/
function DateBox(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("<input size='10' readonly class='inputdate' name='"+sBoxName+"' value='"+sDfltValue+"' onclick='GetCalendar(window.document.all."+sBoxName+")' >");
}
document.onclick = CloseCalendar;
//-->
</SCRIPT>
<BODY topmargin="0" leftmargin="0">
点&#20987;&#36755;入框&#35843;用日&#21382;.<Script>DateBox("Test1")</Script>
&nbsp;
<Script>DateBox("Test2","2004-01-01")</Script>
&nbsp;其它事件&#35843;用日&#21382;.
<input type="text" class="inputdate" size="10" name="Test3" readonly>
<input type="button" class="inputdate" onclick="OpenDate(Test3)" value="&#26174;示日&#21382;">
</BODY>
</HTML>
分享到:
评论

相关推荐

    VC实现炫眩qq界面的模拟(附源码)

    关键字: QQ界面 换肤 自绘控件 透明窗口 Vista样式 免费开发包 随着计算机技术的发展与普及,计算机逐渐走进了人们的日常生活当中。人们通过它来学习,娱乐,信息的交互等等.并且对应需而生的各种各样的软件产品的...

    CWMPPlayer4类做的视频播放器

    2. 删除默认控件,增加一个按钮控件,ID设为ID_OPEN; 3. 在对话框的空白处右键插入ActiveX控件,选择Windows Media Player。注意:路径为C:\WINDOWS\system32\wmp.dll 4. 为ActiveX控件关联一个CWMPPlayer4类型的...

    最精致的日历式日期输入控件

    根据给定文件的信息,本文将详细介绍“最精致的日历式日期输入控件”(Smart Ver 1.00)的相关知识点。此控件允许用户通过点击输入框来调用一个日历界面,以便选择日期。 ### 一、控件概述 此控件是一款功能完善且...

    心灵视觉Ver1.00正式版

    心灵网络(第一版) Ver1.00 演示地址:http://www.xinling8.com/xinling8 心灵网络(第二版) Ver2.00 演示地址:http://www.xinling8.com/xinling82 技术支持:http://www.xinling8.com(有任何疑问请在本站留言!...

    织造制衣MRP管理控制系统(完整版)

    这是每个企业高层领导在决定采用何种管理方式,何种管理系统的之前的最关心的问题。&#61656; 改善经营决策,提高企业的应变能力和竞争地位,企业领导可随时了解销售、生产、财务等方面的运行状况。&#61656; 严格控制...

    透视表OWC控件1.00

    * 透视表控件 * 系统适用: .NET 2005 或 .NET2008 * 作 者:龍.net * 版权所有:蜗牛水里爬 * 版 本:1.00 * 日 期:2009-10-9 * 功能简介:实现透视表功能。纯DIV+CSS布局火狐不兼容、只兼容IE浏览器火狐下...

    wps中excel日期控件下载

    在WPS Office的Excel应用中,日期控件是一种非常实用的功能,它允许用户在工作表中插入一个可交互的日历小部件,以便于选择和输入日期。标题“wps中excel日期控件下载”提示我们要关注如何在WPS Excel中获取和安装这...

    Cell 报表插件

    Cell 插件是华表公司在长期开发实践的基础上推出的功能强大、技术成熟的报表二次开发工具;是第一个国产ActiveX商业组件,有300多个编程接口,实现自定义报表、图表、公式、自定义函数、单元风格、资源本地化等强大...

    HTML日期选择控件

    HTML日期选择控件是网页开发中常用的一种交互元素,它允许用户方便地选取日期,常用于表单提交、日程安排或时间记录等场景。在HTML5中,引入了`&lt;input type="date"&gt;`标签,为开发者提供了一个内置的日期选择控件,但...

    VC/MFC使用日期控件设置、获取日期时间信息

    在这个话题中,我们将深入探讨如何在MFC应用中使用日期控件(CDateTimeCtrl)来设置和获取日期时间信息。日期控件是用户界面中常见的元素,它允许用户选择一个日期或时间,通常用于日程管理、事件记录等场景。 首先...

    VB日期控件_农历控件

    在VB(Visual Basic)编程环境中,日期控件和农历控件是开发应用程序时常见的元素,尤其是在处理日期和时间相关的功能时。VB日期控件通常指的是DatePicker或DateTimePicker,它允许用户从日历小部件中选择一个日期,...

    java swing 时间日期选择控件

    在Swing中,处理日期和时间选择的控件是至关重要的,因为它们为用户提供了一个直观的方式来选择日期或时间,而无需手动输入,从而减少了输入错误和数据丢失的风险。 标题中的“java swing 时间日期选择控件”指的是...

    SmartGrid表格控件 for Asp.Net

    7. **响应式设计**:SmartGrid控件具有良好的适应性,能根据设备屏幕大小自动调整布局,确保在手机、平板和桌面端都能提供良好的用户体验。 8. **扩展性和插件**:控件提供了丰富的API和事件,方便开发者进行二次...

    Android强大的日期时间选择控件

    DatePicker是Android系统自带的一种用于选择日期的控件,通常包含年、月、日三个滚动条。用户可以通过滚动这些条目来选择所需的日期。DatePicker有两种模式:日历视图和数字旋转盘。在API 11及以上版本,系统默认...

    WPF带时间的日期选择控件

    在Windows Presentation Foundation (WPF)框架中,标准的DatePicker控件仅允许用户选择日期,而无法选择具体的时间。这在很多需要精确到小时、分钟甚至秒的场景下显得不足。"WPF带时间的日期选择控件"正是为了解决这...

    HTML中带时间的日期控件

    在HTML中,日期和时间控件为用户提供了方便的方式来输入和选择日期或时间,这对于创建交互式的表单和日历应用特别有用。在HTML5中,引入了`&lt;input type="date"&gt;`和`&lt;input type="time"&gt;`元素来分别处理日期和时间的...

    smartscan扫描控件

    smartscan扫描控件,ocx封装及附有例子!

    qt 定制日期时间控件

    在Qt框架中,QDateTimeEdit是一个非常有用的控件,它允许用户输入和编辑日期和时间。然而,在某些情况下,我们可能需要对这个控件进行定制,以满足特定的用户界面需求或应用程序风格。本篇文章将深入探讨如何在Qt ...

    Excel中使用日期控件

    ### Excel中使用日期控件 #### 一、概述 在Excel中使用日期控件能够显著提升用户在处理涉及日期的数据时的工作效率。通过简单的点击操作,用户可以在指定的单元格中快速选择并输入所需的日期。本文将详细介绍如何...

    EXCEL日期控件11.0

    在Excel中,日期控件是一种交互式工具,它允许用户选择日期,以便在电子表格中输入或筛选数据。"EXCEL日期控件11.0"可能是Microsoft Office 2003或2007中的一个组件,因为它通常与Office 11版本关联。这个控件提供了...

Global site tag (gtag.js) - Google Analytics