| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 718 人关注过本帖
标题:javascript日期选择
只看楼主 加入收藏
gxh012
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2008-2-10
结帖率:100%
收藏
 问题点数:0 回复次数:2 
javascript日期选择
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="Author" content="Jiang Hongbin">
<title>日期选择 - BY ziyue</title>
<script language="JavaScript" type="text/JavaScript">
// 日期选择
// By Ziyue(http://www.)
var months = new Array("一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月");
var daysInMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var days = new Array("日","一", "二", "三", "四", "五", "六");
var today;

document.writeln("<div id='Calendar' style='position:absolute; z-index:1; visibility: hidden; filter:\"progid:DXImageTransform.Microsoft.Shadow(direction=135,color=#999999,strength=3)\"'></div>");

function getDays(month, year)
{
       //下面的这段代码是判断当前是否是闰年的
       if (1 == month)
           return ((0 == year % 4) && (0 != (year % 100))) || (0 == year % 400) ? 29 : 28;
       else
           return daysInMonth[month];
}

function getToday()
{
       //得到今天的年,月,日
       this.now = new Date();
       this.year = this.now.getFullYear();
       this.month = this.now.getMonth();
       this.day = this.now.getDate();
}

function getStringDay(str)
{
       //得到输入框的年,月,日
       var str=str.split("-")
   
       this.now = new Date(parseFloat(str[0]),parseFloat(str[1])-1,parseFloat(str[2]));
       this.year = this.now.getFullYear();
       this.month = this.now.getMonth();
       this.day = this.now.getDate();
}

function newCalendar() {
       var parseYear = parseInt(document.all.Year.options[document.all.Year.selectedIndex].value);
       var newCal = new Date(parseYear, document.all.Month.selectedIndex, 1);
       var day = -1;
       var startDay = newCal.getDay();
       var daily = 0;
   
       if ((today.year == newCal.getFullYear()) &&(today.month == newCal.getMonth()))
           day = today.day;
        
       var tableCal = document.all.calendar;
       var intDaysInMonth =getDays(newCal.getMonth(), newCal.getFullYear());
     
       for (var intWeek = 1; intWeek < tableCal.rows.length;intWeek++)
           for (var intDay = 0;intDay < tableCal.rows[intWeek].cells.length;intDay++)
           {
               var cell = tableCal.rows[intWeek].cells[intDay];
               if ((intDay == startDay) && (0 == daily))
                   daily = 1;
               
               if(day==daily) //今天,调用今天的Class
               {
                   cell.style.background='#6699CC';
                   cell.style.color='#FFFFFF';
                   //cell.style.fontWeight='bold';
               }
               else if(intDay==6) //周六
                   cell.style.color='green';
               else if (intDay==0) //周日
                   cell.style.color='red';
            
               if ((daily > 0) && (daily <= intDaysInMonth))
               {
                   cell.innerText = daily;
                   daily++;
               }
               else
                   cell.innerText = "";
           }
}

function GetDate(InputBox)
{
       var sDate;
       //这段代码处理鼠标点击的情况
       if (event.srcElement.tagName == "TD")
           if (event.srcElement.innerText != "")
           {
               sDate = document.all.Year.value + "-" + document.all.Month.value + "-" + event.srcElement.innerText;
               eval("document.all."+InputBox).value=sDate;
               HiddenCalendar();
           }
}

function HiddenCalendar()
{
       //关闭选择窗口
       document.all.Calendar.style.visibility='hidden';
}

function ShowCalendar(InputBox)
{
       var x,y,intLoop,intWeeks,intDays;
       var DivContent;
       var year,month,day;
       var o=eval("document.all."+InputBox);
       var thisyear; //真正的今年年份
   
       thisyear=new getToday();
       thisyear=thisyear.year;
   
       today = o.value;
       if(isDate(today))
           today = new getStringDay(today);
       else
           today = new getToday();
   
       //显示的位置
       x=o.offsetLeft;
       y=o.offsetTop;
       while(o=o.offsetParent)
       {
           x+=o.offsetLeft;
           y+=o.offsetTop;
       }
       document.all.Calendar.style.left=x+2;
       document.all.Calendar.style.top=y+20;
       document.all.Calendar.style.visibility="visible";
   
       //下面开始输出日历表格(border-color:#9DBAF7)
       DivContent="<table border='0' cellspacing='0' style='border:1px solid #0066FF; background-color:#EDF2FC'>";
       DivContent+="<tr>";
       DivContent+="<td style='border-bottom:1px solid #0066FF; background-color:#C7D8FA'>";
   
       //年
       DivContent+="<select name='Year' id='Year' onChange='newCalendar()' style='font-family:Verdana; font-size:12px'>";
       for (intLoop = thisyear - 35; intLoop < (thisyear + 2); intLoop++)
           DivContent+="<option value= " + intLoop + " " + (today.year == intLoop ? "Selected" : "") + ">" + intLoop + "</option>";
       DivContent+="</select>";
   
       //月
       DivContent+="<select name='Month' id='Month' onChange='newCalendar()' style='font-family:Verdana; font-size:12px'>";
       for (intLoop = 0; intLoop < months.length; intLoop++)
           DivContent+="<option value= " + (intLoop + 1) + " " + (today.month == intLoop ? "Selected" : "") + ">" + months[intLoop] + "</option>";
       DivContent+="</select>";
   
       DivContent+="</td>";
   
       DivContent+="<td style='border-bottom:1px solid #0066FF; background-color:#C7D8FA; font-weight:bold; font-family:Wingdings 2,Wingdings,Webdings; font-size:16px; padding-top:2px; color:#4477FF; cursor:hand' align='center' title='关闭' onClick='javascript:HiddenCalendar()'>S</td>";
       DivContent+="</tr>";
     
       DivContent+="<tr><td align='center' colspan='2'>";
       DivContent+="<table id='calendar' border='0' width='100%'>";
   
       //星期
       DivContent+="<tr>";
       for (intLoop = 0; intLoop < days.length; intLoop++)
           DivContent+="<td align='center' style='font-size:12px'>" + days[intLoop] + "</td>";
       DivContent+="</tr>";
   
       //天
       for (intWeeks = 0; intWeeks < 6; intWeeks++)
       {
           DivContent+="<tr>";
           for (intDays = 0; intDays < days.length; intDays++)
               DivContent+="<td onClick='GetDate(\"" + InputBox + "\")' style='cursor:hand; border-right:1px solid #BBBBBB; border-bottom:1px solid #BBBBBB; color:#215DC6; font-family:Verdana; font-size:12px' align='center'></td>";
           DivContent+="</tr>";
       }
       DivContent+="</table></td></tr></table>";

       document.all.Calendar.innerHTML=DivContent;
       newCalendar();
}

function isDate(dateStr)
{
       var datePat = /^(\d{4})(\-)(\d{1,2})(\-)(\d{1,2})$/;
       var matchArray = dateStr.match(datePat);
       if (matchArray == null) return false;
       var month = matchArray[3];
       var day = matchArray[5];
       var year = matchArray[1];
       if (month < 1 || month > 12) return false;
       if (day < 1 || day > 31) return false;
       if ((month==4 || month==6 || month==9 || month==11) && day==31) return false;
       if (month == 2)
       {
           var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
           if (day > 29 || (day==29 && !isleap)) return false;
       }
       return true;
}
</script>
<style type="text/css">
<!--
td,input {
       font-family: Verdana, Arial, Helvetica, sans-serif;
       font-size: 12px;
}
-->
</style>
</head>

<body>
<form name="form1" method="post" action="">
       <table width="500"     border="0" align="center" cellspacing="1" bgcolor="#CCCCCC">
         <tr bgcolor="#FFFFFF">
             <td align="right">您的生日:</td>
             <td><input name="birthday" type="text" id="birthday" title="点击选择" onClick="javascript:ShowCalendar(this.id)" size="20">
                <input type="button" name="Submit" value="选 择" onClick="javascript:ShowCalendar('birthday')"></td>
              <td>BLOG:<a href="http://www.
         </tr>
         </table>
</form>
</body>
</html>

//http://copyzhu.


日期选择示例javascript代码
[ 2008-01-08 12:43:34 | 作者: Admin ]
字号: 大 | 中 | 小
calendar.js

function PopupCalendar(InstanceName)
{
///Global Tag
this.instanceName=InstanceName;
///Properties
this.separator="-"
this.oBtnTodayTitle="Today"
this.oBtnCancelTitle="Cancel"
this.weekDaySting=new Array("S","M","T","W","T","F","S");
this.monthSting=new Array("January","February","March","April","May","June","July","August","September","October","November","December");
this.Width=200;
this.currDate=new Date();
this.today=new Date();
this.startYear=1900;
this.endYear=2010;
///Css
this.normalfontColor="#666666";
this.selectedfontColor="red";
this.divBorderCss="1px solid #BCD0DE";
this.titleTableBgColor="#98B8CD";
this.tableBorderColor="#CCCCCC"
///Method
this.Init=CalendarInit;
this.Fill=CalendarFill;
this.Refresh=CalendarRefresh;
this.Restore=CalendarRestore;
///HTMLObject
this.oTaget=null;
this.oPreviousCell=null;
this.sDIVID=InstanceName+"_Div";
this.sTABLEID=InstanceName+"_Table";
this.sMONTHID=InstanceName+"_Month";
this.sYEARID=InstanceName+"_Year";
this.sTODAYBTNID=InstanceName+"_TODAYBTN";

}
function CalendarInit() ///Create panel
{
var sMonth,sYear
sMonth=this.currDate.getMonth();
sYear=this.currDate.getYear();
htmlAll="<div id='"+this.sDIVID+"' style='display:none;position:absolute;width:"+this.Width+";border:"+this.divBorderCss+";padding:2px;background-color:#FFFFFF'>";
htmlAll+="<div align='center'>";
/// Month
htmloMonth="<select id='"+this.sMONTHID+"' onchange=CalendarMonthChange("+this.instanceName+") style='width:50%'>";
for(i=0;i<12;i++)
{
htmloMonth+="<option value='"+i+"'>"+this.monthSting[i]+"</option>";
}
htmloMonth+="</select>";
/// Year
htmloYear="<select id='"+this.sYEARID+"' onchange=CalendarYearChange("+this.instanceName+") style='width:50%'>";
for(i=this.startYear;i<=this.endYear;i++)
{
htmloYear+="<option value='"+i+"'>"+i+"</option>";
}
htmloYear+="</select></div>";
/// Day
htmloDayTable="<table id='"+this.sTABLEID+"' width='100%' border=0 cellpadding=0 cellspacing=1 bgcolor='"+this.tableBorderColor+"'>";
htmloDayTable+="<tbody bgcolor='#ffffff'style='font-size:13px'>";
for(i=0;i<=6;i++)
{
if(i==0)
htmloDayTable+="<tr bgcolor='" + this.titleTableBgColor + "'>";
else
htmloDayTable+="<tr>";
for(j=0;j<7;j++)
{

if(i==0)
{
htmloDayTable+="<td height='20' align='center' valign='middle' style='cursor:hand'>";
htmloDayTable+=this.weekDaySting[j]+"</td>"
}
else
{
htmloDayTable+="<td height='20' align='center' valign='middle' style='cursor:hand'";
htmloDayTable+=" onmouseover=CalendarCellsMsOver("+this.instanceName+")";
htmloDayTable+=" onmouseout=CalendarCellsMsOut("+this.instanceName+")";
htmloDayTable+=" onclick=CalendarCellsClick(this,"+this.instanceName+")>";
htmloDayTable+="?</td>"
}
}
htmloDayTable+="</tr>";
}
htmloDayTable+="</tbody></table>";
/// Today Button
htmloButton="<div align='center' style='padding:3px'>"
htmloButton+="<button id='"+this.sTODAYBTNID+"' style='width:40%;border:1px solid #BCD0DE;background-color:#eeeeee;cursor:hand'"
htmloButton+=" onclick=CalendarTodayClick("+this.instanceName+")>"+this.oBtnTodayTitle+"</button>?"
htmloButton+="<button style='width:40%;border:1px solid #BCD0DE;background-color:#eeeeee;cursor:hand'"
htmloButton+=" onclick=CalendarCancel("+this.instanceName+")>"+this.oBtnCancelTitle+"</button> "
htmloButton+="</div>"
/// All
htmlAll=htmlAll+htmloMonth+htmloYear+htmloDayTable+htmloButton+"</div>";
document.write(htmlAll);
this.Fill();
}
function CalendarFill() ///
{
var sMonth,sYear,sWeekDay,sToday,oTable,currRow,MaxDay,iDaySn,sIndex,rowIndex,cellIndex,oSelectMonth,oSelectYear
sMonth=this.currDate.getMonth();
sYear=this.currDate.getYear();
sWeekDay=(new Date(sYear,sMonth,1)).getDay();
sToday=this.currDate.getDate();
iDaySn=1
oTable=document.all[this.sTABLEID];
currRow=oTable.rows[1];
MaxDay=CalendarGetMaxDay(sYear,sMonth);

oSelectMonth=document.all[this.sMONTHID]
oSelectMonth.selectedIndex=sMonth;
oSelectYear=document.all[this.sYEARID]
for(i=0;i<oSelectYear.length;i++)
{
if(parseInt(oSelectYear.options[i].value)==sYear)oSelectYear.selectedIndex=i;
}
////
for(rowIndex=1;rowIndex<=6;rowIndex++)
{
if(iDaySn>MaxDay)break;
currRow = oTable.rows[rowIndex];
cellIndex = 0;
if(rowIndex==1)cellIndex = sWeekDay;
for(;cellIndex<currRow.cells.length;cellIndex++)
{
if(iDaySn==sToday)
{
currRow.cells[cellIndex].innerHTML="<font color='"+this.selectedfontColor+"'><i><b>"+iDaySn+"</b></i></font>";
this.oPreviousCell=currRow.cells[cellIndex];
}
else
{
currRow.cells[cellIndex].innerHTML=iDaySn;
currRow.cells[cellIndex].style.color=this.normalfontColor;
}
CalendarCellSetCss(0,currRow.cells[cellIndex]);
iDaySn++;
if(iDaySn>MaxDay)break;
}
}
}
function CalendarRestore() /// Clear Data
{
var i,j,oTable
oTable=document.all[this.sTABLEID]
for(i=1;i<oTable.rows.length;i++)
{
for(j=0;j<oTable.rows[i].cells.length;j++)
{
CalendarCellSetCss(0,oTable.rows[i].cells[j]);
oTable.rows[i].cells[j].innerHTML="?";
}
}
}
function CalendarRefresh(newDate) ///
{
this.currDate=newDate;
this.Restore();
this.Fill();
}
function CalendarCellsMsOver(oInstance) /// Cell MouseOver
{
var myCell = event.srcElement;
CalendarCellSetCss(0,oInstance.oPreviousCell);
if(myCell)
{
CalendarCellSetCss(1,myCell);
oInstance.oPreviousCell=myCell;
}
}
function CalendarCellsMsOut(oInstance) ////// Cell MouseOut
{
var myCell = event.srcElement;
CalendarCellSetCss(0,myCell);
}
function CalendarYearChange(oInstance) /// Year Change
{
var sDay,sMonth,sYear,newDate
sDay=oInstance.currDate.getDate();
sMonth=oInstance.currDate.getMonth();
sYear=document.all[oInstance.sYEARID].value
newDate=new Date(sYear,sMonth,sDay);
oInstance.Refresh(newDate);
}
function CalendarMonthChange(oInstance) /// Month Change
{
var sDay,sMonth,sYear,newDate
sDay=oInstance.currDate.getDate();
sMonth=document.all[oInstance.sMONTHID].value
sYear=oInstance.currDate.getYear();
newDate=new Date(sYear,sMonth,sDay);
oInstance.Refresh(newDate);
}
function CalendarCellsClick(oCell,oInstance)
{
var sDay,sMonth,sYear,newDate
sYear=oInstance.currDate.getFullYear();
sMonth=oInstance.currDate.getMonth();
sDay=oInstance.currDate.getDate();
if(oCell.innerText!=" ")
{
sDay=parseInt(oCell.innerText);
if(sDay!=oInstance.currDate.getDate())
{
newDate=new Date(sYear,sMonth,sDay);
oInstance.Refresh(newDate);
}
}
sDateString=sYear+oInstance.separator+CalendarDblNum(sMonth+1)+oInstance.separator+CalendarDblNum(sDay); ///return sDateString
if(oInstance.oTaget.tagName.toLowerCase()=="input")oInstance.oTaget.value = sDateString;
CalendarCancel(oInstance);
return sDateString;
}
function CalendarTodayClick(oInstance) /// "Today" button Change
{
oInstance.Refresh(new Date());
}
function getDateString(oInputSrc,oInstance)
{
if(oInputSrc&&oInstance)
{
var CalendarDiv=document.all[oInstance.sDIVID];
oInstance.oTaget=oInputSrc;
CalendarDiv.style.pixelLeft=CalendargetPos(oInputSrc,"Left");
CalendarDiv.style.pixelTop=CalendargetPos(oInputSrc,"Top") + oInputSrc.offsetHeight;
CalendarDiv.style.display=(CalendarDiv.style.display=="none")?"":"none";
}
}
function CalendarCellSetCss(sMode,oCell) /// Set Cell Css
{
// sMode
// 0: OnMouserOut 1: OnMouseOver
if(sMode)
{
oCell.style.border="1px solid #5589AA";
oCell.style.backgroundColor="#BCD0DE";
}
else
{
oCell.style.border="1px solid #FFFFFF";
oCell.style.backgroundColor="#FFFFFF";
}
}
function CalendarGetMaxDay(nowYear,nowMonth) /// Get MaxDay of current month
{
var nextMonth,nextYear,currDate,nextDate,theMaxDay
nextMonth=nowMonth+1;
if(nextMonth>11)
{
nextYear=nowYear+1;
nextMonth=0;
}
else
{
nextYear=nowYear;
}
currDate=new Date(nowYear,nowMonth,1);
nextDate=new Date(nextYear,nextMonth,1);
theMaxDay=(nextDate-currDate)/(24*60*60*1000);
return theMaxDay;
}
function CalendargetPos(el,ePro) /// Get Absolute Position
{
var ePos=0;
while(el!=null)
{
ePos+=el["offset"+ePro];
el=el.offsetParent;
}
return ePos;
}
function CalendarDblNum(num)
{
if(num < 10)
return "0"+num;
else
return num;
}
function CalendarCancel(oInstance) ///Cancel
{
var CalendarDiv=document.all[oInstance.sDIVID];
CalendarDiv.style.display="none";
}

页面代码:

<script language="javascript" src="calendar.js"></script>//导入calendar.js文件

<script language="javascript">
var oCalendarChs=new PopupCalendar("oCalendarChs"); //初始化控件时,请给出实例名称:oCalendarChs
oCalendarChs.weekDaySting=new Array("日","一","二","三","四","五","六");
oCalendarChs.monthSting=new Array("一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月");
oCalendarChs.oBtnTodayTitle="今天";
oCalendarChs.oBtnCancelTitle="取消";
oCalendarChs.Init();
</script>

生日 : <input name="birthday" type="text" onfocus="getDateString(this,oCalendarChs)" readonly="readonly" />
[最后修改由 Admin, 于 2008-01-08 12:47:04]

http://www.

[[it] 本帖最后由 gxh012 于 2008-2-15 18:13 编辑 [/it]]
搜索更多相关主题的帖子: javascript 选择 
2008-02-12 02:41
Adalmy123
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2008-2-4
收藏
得分:0 
有没有最后的界面看看啊?
2008-02-12 02:55
gxh012
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2008-2-10
收藏
得分:0 
界面如下:
第二个程序运行界面如下:

未命名.GIF (6.49 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
2008-02-12 03:31
快速回复:javascript日期选择
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.080377 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved