zoukankan      html  css  js  c++  java
  • 时间选择的三级联动


    <form name="reg_testdate"> <select name="YYYY" onChange="YYYYDD(this.value)" id="yy"> <option value="">请选择</option>
    </select> <select name="MM" onChange="MMDD(this.value)" id="mm"> <option value="">选择</option>
    </select> <select name="DD" onChange="DDD(this.value)" id="dd"> <option value="">选择</option> </select> </form>
    <script>
    var changeDD = 1;//->一个全局变量
      function YYYYMMDDstart() {
        MonHead = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
        //先给年下拉框赋内容
        var y = new Date().getFullYear();
        for (var i = y ; i < (y + 5); i++) //以今年为准,前30年,后30年
          document.reg_testdate.YYYY.options.add(new Option(" " + i , i));
        //赋月份的下拉框
        for (var i = 1; i < 13; i++)
          document.reg_testdate.MM.options.add(new Option(" " + i , i));
        document.reg_testdate.YYYY.value = y;
        document.reg_testdate.MM.value = new Date().getMonth() + 1;
        var n = MonHead[new Date().getMonth()];
        if (new Date().getMonth() == 1 && IsPinYear(YYYYvalue)) n++;
        writeDay(n); //赋日期下拉框
        //->赋值给日,为当天日期
    //    document.reg_testdate.DD.value = new Date().getDate();
      }
      if (document.attachEvent)
        window.attachEvent("onload", YYYYMMDDstart);
      else
        window.addEventListener('load', YYYYMMDDstart, false);
     
      function YYYYDD(str) //年发生变化时日期发生变化(主要是判断闰平年)
      {
        var MMvalue = document.reg_testdate.MM.options[document.reg_testdate.MM.selectedIndex].value;
        if (MMvalue == "") {
    //      var e = document.reg_testdate.DD;
          optionsClear(e);
          return;
        }
        var n = MonHead[MMvalue - 1];
        if (MMvalue == 2 && IsPinYear(str)) n++;
        writeDay(n)
      }
     
      function MMDD(str) //月发生变化时日期联动
      {
        var YYYYvalue = document.reg_testdate.YYYY.options[document.reg_testdate.YYYY.selectedIndex].value;
        if (YYYYvalue == "") {
          var e = document.reg_testdate.DD;
          optionsClear(e);
          return;
        }
        var n = MonHead[str - 1];
        if (str == 2 && IsPinYear(YYYYvalue)) n++;
        writeDay(n)
      }
     
      function writeDay(n) //据条件写日期的下拉框
      {
        var e = document.reg_testdate.DD;
        optionsClear(e);
        for (var i = 1; i < (n + 1); i++)
        {
          e.options.add(new Option(" " + i , i));
          if(i == changeDD){
            e.options[i].selected = true; //->保持选中状态
          }
        }
        console.log(i);
        console.log(changeDD);
      }
     
      function IsPinYear(year) //判断是否闰平年
      {
        return (0 == year % 4 && (year % 100 != 0 || year % 400 == 0));
      }
     
      function optionsClear(e) {
        e.options.length = 1;
      }
      //->随时监听日的改变
      function DDD(str){
        changeDD = str;
      }
      </script>
    

    效果如下:

     

  • 相关阅读:
    学好C++必须要注意的十八个问题
    c++设计模式-----抽象工厂模式
    C++设计模式----工厂模式
    c++设计模式----装饰模式
    常用算法(二)—高级算法
    常用算法收集
    修改admin中App的名称与表的名称
    数据分析画图,使用原生sql查询数据
    组合搜索框的实现
    django前端分页小组件
  • 原文地址:https://www.cnblogs.com/zhaohui123/p/7047475.html
Copyright © 2011-2022 走看看