文章·资料 电脑软件 手机应用 网站源码




    本 站 搜 索
   推 荐 文 章        More...
华硕易电脑(ASUS Eee PC 1025C..
先来段开场白:为了外出携带方便,到淘..
Acronis True Image 使用说明
  一款可以在Windows下使用全部功..
Norton Ghost 使用详解
一、分区备份   使用Ghost进行系..
    文 章 阅 读 排 行
手机视频监控 APP 关闭广告:萤..
一、萤石云视频:我的,设置,隐私设置,..
常见数据库介绍与对比(SQL Serv..
常见数据库的对比分析,涵盖你提到的 A..
Windows 系统修改默认文件类型..
Windows 系统文件类型图标,通常由默..
Windows 系统安装或备份时 ISO,..
【ISO 文件】 ISO 文件其实就是光..
Microsoft SQL Server 2000 Per..
  对于第一次安装 Microsoft SQL Se..
颜色与英文单词对照
颜色与英文单词对照 red green bl..
PakePlus 构建 APP 需要 Github..
PakePlus 是一个基于 Rust Tauri 的..
主页真的越Google、越简洁越好吗
  如果你在11月10日早上打开雅虎中..
网络工程师必懂的专业术语
路由器问题:1、什么时候使用多路由协..
为啥现在的电脑都不能安装 Wind..
说实话,这几年如果你尝试在新电脑..
 文 章 信 息
JavaScript 日期选择功能 一
评论()〗〖留言〗〖收藏
〖文章分类:电脑·手机·网络 / HTML·CSS·JavaScript〗〖阅读选项
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>日期選擇</title>
<script language="JavaScript" type="text/JavaScript">
/*=======Calendar.js=======By Jiang Hongbin=======*/

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:\"progidXImageTransform.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 != "")
                {
                        //input获得的日期格式:2007-1-6
                        sDate = document.all.Year.value + "-" + document.all.Month.value + "-" + event.srcElement.innerText;

                        /**input获得的日期格式:2007-01-06
                         *sDate = document.all.Year.value + "-" + (document.all.Month.value.length==2?document.all.Month.value:"0"+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=document.getElementById(InputBox);
        var o=InputBox;
        var oid=o.id;
        var thisyear; //真正的今年年份
       
        if(!oid)oid=o.name;
       
        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 - 100; 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(\"" + oid + "\")' 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;
}
body,td,th {
        font-family: Arial;
}
-->
</style>
</head>

<body>
<form name="form1" method="post" action="">
        <table width="500"  border="0" align="center">
          <tr bgcolor="#FFFFFF">
                  <td align="right">日期:</td>
                  <td><input name="birthday" type="text" id="birthday" title="點擊選擇" onClick="javascript:ShowCalendar(this)" size="20"></td>
          </tr>
          </table>
</form>
</body>
</html>

文章作者:未知  更新日期:2008-03-23
〖文章浏览:〗〖发送文章〗〖打印文章
相关文章 ·JavaScript 脚本嵌套的两种方法2009-08-23
·ASP用JavaScript脚本实现分页的办法2008-03-07
·用 JavaScript 简单实现网页的中文简体繁体的转换2005-07-26
·JavaScript 弹出窗口代码 一2005-10-09
·JavaScript表单验证2005-12-15
·使用脚本(JavaScript)对下拉表单(Select)选择而改变表单文本框(Input)的字体.字号.颜色2009-07-14
相关软件 ·JavaScript:获取网页标签的 alt 或 title 属性的值并自定义显示 V2.02010-12-19
·JavaScript:给文章标题的输入框增加设置样式的弹出窗口(字体/字号/颜色/背景颜色/粗体/斜体/中划线/下划线)V2.22025-07-05
·JavaScript:HTML 代码转换为 ASP/JavaScript/JSP/Perl/PHP/SWS/VBNet2022-06-30
·Java V6.0/V8.02025-04-10
·Windows 12 网页版 V10.1.0(HTML+CSS+JavaScript)2026-03-10
·JavaScript 参考手册2010-11-10