非常简单的javascript年-月-日三级联动下拉框

<html>

  <head>

  <title>年月日三下拉框联动</title>

  <meta http-equiv='Content-Type' content='text/html; charset=gb2312'>

  <meta name='author' content='oiea'>

  

  <script language="JavaScript">

      <!--

      function initDate(year,month,day)

      {

            //每个月的初始天数

          MonDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

          //当前的年份

          var y = new Date().getFullYear();

          //当前的月份

          var m = new Date().getMonth()+1; //javascript月份为0-11

          //但前的天份

          var d = new Date().getDate();

          

            //以今年为准,向后2年,填充年份下拉框

          for (var i = y; i < (y+2); i++)

            {

              year.options.add(new Option(i,i));

            }

            //选中今年

            year.value=y;



          //填充月份下拉框

          for (var i = 1; i <= 12; i++)

            {

                month.options.add(new Option(i,i));

            }

            //选中当月

            month.value = m;

                

            //获得当月的初始化天数

            var n = MonDays[m-1];

            //如果为2月,天数加1

            if (m == 2 && isLeapYear(year.options[year.selectedIndex].value))

                  n++;

            //填充日期下拉框

            createDay(n,day); 

            //选中当日

            day.value = new Date().getDate();

      }



      function change(year,month,day) //年月变化,改变日

      {

           var y = year.options[year.selectedIndex].value;

           var m = month.options[month.selectedIndex].value;

           //if (m == "" ){  clearOptions(day); return;}

           var n = MonDays[m - 1];

           if ( m ==2 && isLeapYear(y))

           {

               n++;

           }

           createDay(n,day)

      }



     

      function createDay(n,day) //填充日期下拉框

      {

          //清空下拉框

           clearOptions(day);

           //几天,就写入几项

           for(var i=1; i<=n; i++)

           {

              day.options.add(new Option(i,i));

           }

      }



        function clearOptions(ctl)//删除下拉框中的所有选项

      {

            for(var i=ctl.options.length-1; i>=0; i--)

            {

              ctl.remove(i);

          }

      }

      

      function isLeapYear(year)//判断是否闰年

      { 

          return( year%4==0 || (year%100 ==0 && year%400 == 0));

      }

      //-->

   </script>

  </head>

  <body οnlοad="initDate(document.form1.select_year,document.form1.select_month,document.form1.select_day)">

      <form name="form1">

            <select name="select_year" οnchange="change(this, document.form1.select_month, document.form1.select_day)"></select>year

            <select name="select_month" οnchange="change(document.form1.select_year, this,document.form1.select_day)"></select>month 

            <select name="select_day"></select>day

      </form>

  </body>

  </html>

经典三级联动 <html> <head> <title>下拉框联动 </title> <meta http-equiv='Content-Type' content='text/html; charset=gb2312'> </head> <body> <form name=form1> <select name=YYYY onChange="YYYYDD(this.value)"> <option value="">请选择 </option> </select> <select name=MM onChange="MMDD(this.value)"> <option value="">选择 </option> </select> <select name=DD> <option value="">选择 </option> </select> </form> <script language="JavaScript"> <!-- function YYYYMMDDstart() { MonHead = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; //先给下拉框赋内容 var y = new Date().getFullYear(); for (var i = (y-30); i < (y+30); i++) //以今为准,前30,后30 document.form1.YYYY.options.add(new Option(" "+ i +" ", i)); //赋份的下拉框 for (var i = 1; i < 13; i++) document.form1.MM.options.add(new Option(" " + i + " ", i)); document.form1.YYYY.value = y; document.form1.MM.value = new Date().getMonth() + 1; var n = MonHead[new Date().getMonth()]; if (new Date().getMonth() ==1 && IsPinYear(YYYYvalue)) n++; writeDay(n); //赋下拉框Author:meizz document.form1.DD.value = new Date().getDate(); } if(document.attachEvent) window.attachEvent("onload", YYYYMMDDstart); else window.addEventListener('load', YYYYMMDDstart, false); function YYYYDD(str) //发生变化时期发生变化(主要是判断闰平) { var MMvalue = document.form1.MM.options[document.form1.MM.selectedIndex].value; if (MMvalue == ""){ var e = document.form1.DD; optionsClear(e); return;} var n = MonHead[MMvalue - 1]; if (MMvalue ==2 && IsPinYear(str)) n++; writeDay(n) } function MMDD(str) //发生变化时期联动 { var YYYYvalue = document.form1.YYYY.options[document.form1.YYYY.selectedIndex].value; if (YYYYvalue == ""){ var e = document.form1.DD; optionsClear(e); return;} var n = MonHead[str - 1]; if (str ==2 && IsPinYear(YYYYvalue)) n++; writeDay(n) } function writeDay(n) //据条件写期的下拉框 { var e = document.form1.DD; optionsClear(e); for (var i=1; i <(n+1); i++) e.options.add(new Option(" "+ i + " ", i)); } function IsPinYear(year)//判断是否闰平 { return(0 == year%4 && (year%100 !=0 || year%400 == 0));} function optionsClear(e) { e.options.length = 1; } //--> </script> </body> </html>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值