控件效果如下:
从左到右:month,day,year
.cs文件初始化这三个下拉列表复制代码 代码如下: private void BindBirthDay(int day, int month, int year) { int dayNow = day; int monNow = month; int yearNow = year; //binding Month for (int i = 1; i <= 12; i++) { ddlBirMon.Items.Add(new ListItem(i.ToString(), i.ToString())); } ddlBirMon.Items[monNow - 1].Selected = true; //binding Day int daysOfMonth = DateTime.DaysInMonth(yearNow, monNow); for (int i = 1; i <= daysOfMonth; i++) { ddlBirDay.Items.Add(new ListItem(i.ToString(), i.ToString())); } ddlBirDay.Items[dayNow - 1].Selected = true; //binding Year for (int i = 20; i > 0; i--) { ddlBirYear.Items.Add(new ListItem((yearNow - i).ToString(), (yearNow - i).ToString())); } for (int i = 0; i < 20; i++) { ddlBirYear.Items.Add(new ListItem((yearNow + i).ToString(), (yearNow + i).ToString())); } ddlBirYear.Items.FindByValue(yearNow.ToString()).Selected = true; } js代码如下(自己写的,不保证完全正确啊): 复制代码 代码如下: function ChangeDay() { var month = document.getElementById("<%=ddlBirMon.ClientID %>"); var year = document.getElementById("<%=ddlBirYear.ClientID %>"); var day = document.getElementById("<%=ddlBirDay.ClientID %>"); if (month.selectedIndex == 3 || month.selectedIndex == 5 || month.selectedIndex == 8 || month.selectedIndex == 10) { if (day.length == 31) { if (day.options[30].selected == true) { day.options[29].selected = true; } day.remove(30); } } else{ while (day.length < 31) { day.add(new Option(day.length+1,day.length+1)); } } if (month.selectedIndex == 1) { if (day.length > 28) { if (day.selectedIndex == 28) { day.options[27].selected = true; } while (day.length > 28) { day.remove(day.length - 1); } } var sy = year.options[year.selectedIndex].value; if ((sy % 4 == 0 && sy % 100 != 0) || (sy % 400==0)) { day.add(new Option("29", "29")); } } }
推荐阅读
js ie非ie浏览器的几种判断方法小结
最近在 司徒正美js 全世界最短的IE浏览器判断代码 一文,看到只有6byte的判断ie与非ie的方法。其代码如下:
[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 其实有很多判断的方法,大都是根据浏览器的特>>>详细阅读
本文标题:基于Asp.net与Javascript控制的日期控件
地址:http://www.17bianji.com/kaifa2/JS/26333.html
1/2 1