日期三级下拉菜单

Html

 1 <select id="selYear"></select>
 2 <select id="selMonth"></select>
 3 <select id="selDay"></select>
 4 <script src="DateSelector.js"></script>
 5 <script type="text/javascript">
 6     var selYear = window.document.getElementById("selYear");
 7     var selMonth = window.document.getElementById("selMonth");
 8     var selDay = window.document.getElementById("selDay");
 9     //var date = new Date();
10     // 新建一个DateSelector类的实例,将三个select对象传进去
11     new DateSelector(selYear, selMonth, selDay, 1990, 1, 1);
12     // 也可以试试下边的代码,起始日为当日
13     //var dt = new Date();
14     //new DateSelector(selYear, selMonth ,selDay, dt);
15 </script>

JS,文件地址http://files.cnblogs.com/files/pzpzpop/DateSelector.js

  1 function DateSelector(selYear, selMonth, selDay) {
  2     this.selYear = selYear;
  3     this.selMonth = selMonth;
  4     this.selDay = selDay;
  5     this.selYear.Group = this;
  6     this.selMonth.Group = this;
  7     // 给年份、月份下拉菜单添加处理onchange事件的函数
  8     if (window.document.all != null) // IE
  9     {
 10         this.selYear.attachEvent("onchange", DateSelector.Onchange);
 11         this.selMonth.attachEvent("onchange", DateSelector.Onchange);
 12     }
 13     else // Firefox
 14     {
 15         this.selYear.addEventListener("change", DateSelector.Onchange, false);
 16         this.selMonth.addEventListener("change", DateSelector.Onchange, false);
 17     }
 18
 19     if (arguments.length == 4) // 如果传入参数个数为4,最后一个参数必须为Date对象
 20         this.InitSelector(arguments[3].getFullYear(), arguments[3].getMonth() + 1, arguments[3].getDate());
 21     else if (arguments.length == 6) // 如果传入参数个数为6,最后三个参数必须为初始的年月日数值
 22         this.InitSelector(arguments[3], arguments[4], arguments[5]);
 23     else // 默认使用当前日期
 24     {
 25         var dt = new Date();
 26         this.InitSelector(dt.getFullYear(), dt.getMonth() + 1, dt.getDate());
 27     }
 28 }
 29
 30 // 增加一个最大年份的属性
 31 DateSelector.prototype.MinYear = 1900;
 32
 33 // 增加一个最大年份的属性
 34 DateSelector.prototype.MaxYear = (new Date()).getFullYear();
 35
 36 // 初始化年份
 37 DateSelector.prototype.InitYearSelect = function () {
 38     // 循环添加OPION元素到年份select对象中
 39     for (var i = this.MaxYear; i >= this.MinYear; i--) {
 40         // 新建一个OPTION对象
 41         var op = window.document.createElement("OPTION");
 42
 43         // 设置OPTION对象的值
 44         op.value = i;
 45
 46         // 设置OPTION对象的内容
 47         op.innerHTML = i;
 48
 49         // 添加到年份select对象
 50         this.selYear.appendChild(op);
 51     }
 52 }
 53
 54 // 初始化月份
 55 DateSelector.prototype.InitMonthSelect = function () {
 56     // 循环添加OPION元素到月份select对象中
 57     for (var i = 1; i < 13; i++) {
 58         // 新建一个OPTION对象
 59         var op = window.document.createElement("OPTION");
 60
 61         // 设置OPTION对象的值
 62         op.value = i;
 63
 64         // 设置OPTION对象的内容
 65         op.innerHTML = i;
 66
 67         // 添加到月份select对象
 68         this.selMonth.appendChild(op);
 69     }
 70 }
 71
 72 // 根据年份与月份获取当月的天数
 73 DateSelector.DaysInMonth = function (year, month) {
 74     var date = new Date(year, month, 0);
 75     return date.getDate();
 76 }
 77
 78 // 初始化天数
 79 DateSelector.prototype.InitDaySelect = function () {
 80     // 使用parseInt函数获取当前的年份和月份
 81     var year = parseInt(this.selYear.value);
 82     var month = parseInt(this.selMonth.value);
 83
 84     // 获取当月的天数
 85     var daysInMonth = DateSelector.DaysInMonth(year, month);
 86
 87     // 清空原有的选项
 88     this.selDay.options.length = 0;
 89     // 循环添加OPION元素到天数select对象中
 90     for (var i = 1; i <= daysInMonth; i++) {
 91         // 新建一个OPTION对象
 92         var op = window.document.createElement("OPTION");
 93
 94         // 设置OPTION对象的值
 95         op.value = i;
 96
 97         // 设置OPTION对象的内容
 98         op.innerHTML = i;
 99
100         // 添加到天数select对象
101         this.selDay.appendChild(op);
102     }
103 }
104
105 // 处理年份和月份onchange事件的方法,它获取事件来源对象(即selYear或selMonth)
106 // 并调用它的Group对象(即DateSelector实例,请见构造函数)提供的InitDaySelect方法重新初始化天数
107 // 参数e为event对象
108 DateSelector.Onchange = function (e) {
109     var selector = window.document.all != null ? e.srcElement : e.target;
110     selector.Group.InitDaySelect();
111 }
112
113 // 根据参数初始化下拉菜单选项
114 DateSelector.prototype.InitSelector = function (year, month, day) {
115     // 由于外部是可以调用这个方法,因此我们在这里也要将selYear和selMonth的选项清空掉
116     // 另外因为InitDaySelect方法已经有清空天数下拉菜单,因此这里就不用重复工作了
117     this.selYear.options.length = 0;
118     this.selMonth.options.length = 0;
119
120     // 初始化年、月
121     this.InitYearSelect();
122     this.InitMonthSelect();
123
124     // 设置年、月初始值
125     this.selYear.selectedIndex = this.MaxYear - year;
126     this.selMonth.selectedIndex = month - 1;
127
128     // 初始化天数
129     this.InitDaySelect();
130
131     // 设置天数初始值
132     this.selDay.selectedIndex = day - 1;
133
134 }
时间: 2024-08-26 17:06:55

日期三级下拉菜单的相关文章

CSS样式三级下拉菜单

1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="

三级下拉菜单 (通用版)

<html><head><title>阿里西西网页特效演示, 三级下拉菜单 (通用版)</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head><body> <SCRIPT LANGUAGE="JavaScript"><!--functi

CSS打造三级下拉菜单

<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><meta name="keywords" content="站长,网页特效,js特效,广告代码,zzjs,zzjs.net,sky,www.zzjs.net,站长特效 网" /><meta name="d

CSS3实现的一款三级下拉菜单

<html> <head> <title>河北礼品公司</title> <style> body { background:#eee; margin:0; padding:0; } .example { background:#fff url(/imagesforcode/201306/clouds-in-blue-sky.jpg); width:770px; height:570px; border:1px #000 solid; margin

使用POI生成具有三级下拉菜单的Excel文档

曾在工作中遇到这种需求,研究很久编码出一个方法,提供于此供大家参考. 效果图如下: 开始贴代码,代码中部分测试数据不影响功能. 第一部分(核心处理): 此部分包含几个方面: 获取三级下拉框各列的数据: 创建每个下拉功能的名称管理器 在隐藏的sheet中生成下拉菜单所需要的row 代码如下: /** * 第一部分 * 将三个列表所有字段从数据库查询出,并生成名称管理器,存放至隐藏的sheet中 */ private static HSSFWorkbook writePorpData() { int

Django分析之三级下拉菜单选择省/市/县

今天遇到了一个一直想做却没有机会去做的功能,今天完成了便记录下来. 那这次是具体是个什么功能呢?其实还是很简单的效果,就是在用户注册的时候可以选择省/市/县,很简单的一个小功能. 那现在就开始了~首先我们要在数据库中先建一个表,用来保存全国的省/市/县信息,下面是表的结构: CREATE TABLE IF NOT EXISTS "china_regionalTable" ( "id" integer NOT NULL, "name" varcha

三级下拉菜单

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> </head> <style type="text/css"> ul li.yiji { list-style-image: url(img/-.gif); } ul li{ cursor: pointer; } </styl

MVC省市区三级下拉菜单联动

控制器端代码(都在同一个表中): using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using MvcApplication10.Models; namespace 下拉列表联动显示_中国省市_.Controllers { public class HomeController : Controller { [HttpGet] //刚

MVC三级下拉菜单

控制器端代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using MvcApplication8.Models; namespace MvcApplication8.Controllers { public class CarsController : Controller { // // GET: /Cars/ publ