| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2339 人关注过本帖
标题:严格的三级联动日期下拉菜单
只看楼主 加入收藏
yanhaolang
Rank: 1
等 级:新手上路
帖 子:60
专家分:7
注 册:2007-3-12
收藏
 问题点数:0 回复次数:3 
严格的三级联动日期下拉菜单
百度,Google了一下,找个JavaScript实现的严格的日期下拉菜单(判断闰年,月大月小,对应的日期准确),没找到。网上的都不完整,要不就小题大作,写的异常恐怖,看了头晕。于是,只有自己写了。。。
<html>
<!---
  闰年判断条件:
1、能被4整除,但不能被100整除;   
2、能被4整除,又能被400整除)。因为能够被400整除一定能被4整除所以 条件为能被400整除就可以。
!---->
<form name="frm" action="">
<table width="90%">
   <tr>
    <td width="30%" align=right>日期:</td>
    <td><center>
      <label>
      <select id="select1" onChange="my_day()">
        </select>
        </label>
      
      <label>
      <select id="select2" onChange="my_day()">
      </select>
            </label>
      <label>
      <select id="select3">
      </select>
      </label>
   
    </center>
    </td>
  </tr>
</table>
</form>
<script language="javascript" type="text/javascript">
var Digital=new Date();
    var year = document.getElementById("select1");
    var month = document.getElementById("select2");
    var day = document.getElementById("select3");

function my_year(){
  for(var i=0;i<150;i++)
   year.options[i] = new Option(1900+i,1900+i);
}

function my_month(){
  for(var i = 0; i < 12; i++) {
        month.options[i] = new Option(i+1,i+1);         
      }   
}
function my_day(){
  //for(var i=0;i<day.options.length;i++){  //用循环逐个清除上次的options元素
  // day.options.remove(i);  //通过索引删除
     // day.options.remove(day.options[i]);//通过对象删除
  // }
     day.options.length=0; //快速清理上次的日期值,这个很重要
   
  switch(parseInt(month.value)){
   
  case 1:case 3:case 5:case 7:case 8:case 10:case 12: {
  for(var i = 0; i < 31; i++ )
  day.options[i] = new Option(i+1,i+1);
  //alert(month.value);
  break;}
   
  case 4:case 6:case 9:case 11:{
  for(var i = 0; i < 30; i++    )
  day.options[i] = new Option(i+1,i+1);
  break; }
   
  case 2:
  if((year.value%4==0&&year.value%100!=0)||year.value%400==0){
   for(var i=0;i<29;i++)
   day.options[i] = new Option(i+1,i+1);
  }
  else{
   for(var i=0;i<28;i++)
   day.options[i] = new Option(i+1,i+1);   
  }
  break;
   
}   
}


function initSelectOps(){ //注意调用函数的顺序不能错了,否则出错
my_year();
my_month();
year.options[Digital.getYear()-1900].selected = true;
    month.options[Digital.getMonth()].selected = true;
my_day();   
day.options[Digital.getDate()-1].selected = true;      
     
  //alert(Digital.getYear());
  //alert(year.value);
  //alert(year.options[year.selectedIndex].value);
}
initSelectOps();
</script>
</html>
搜索更多相关主题的帖子: 菜单 
2008-11-14 16:18
sunfishy
Rank: 3Rank: 3
等 级:论坛游侠
威 望:5
帖 子:311
专家分:163
注 册:2007-6-29
收藏
得分:0 
哈哈..晏兄.偶是小吴.看来不顶你的贴都不行了.

好东东要收藏.
2008-11-15 15:07
福橘之后
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2008-3-2
收藏
得分:0 
不错
2008-11-18 21:15
nianshi
Rank: 1
等 级:新手上路
帖 子:199
专家分:0
注 册:2007-11-7
收藏
得分:0 
不错啊 顶了!

行至水穷处 坐看去起时
C语言QQ群1:51871776  群2:26313099  群3:47145282
2008-11-24 15:08
快速回复:严格的三级联动日期下拉菜单
数据加载中...
 
   



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

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