首页 > 代码库 > 时间选择的三级联动

时间选择的三级联动


<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 = http://www.mamicode.com/y;"onload", YYYYMMDDstart);
  else
    window.addEventListener(‘load‘, YYYYMMDDstart, false);
 
  function YYYYDD(str) //年发生变化时日期发生变化(主要是判断闰平年)
  {
    var MMvalue = http://www.mamicode.com/document.reg_testdate.MM.options[document.reg_testdate.MM.selectedIndex].value;"") {
//      var e = document.reg_testdate.DD;
      optionsClear(e);
      return;
    }
    var n = MonHead[MMvalue - 1];
    if (MMvalue =http://www.mamicode.com/= 2 && IsPinYear(str)) n++;"") {
      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>

效果如下:

 技术分享

时间选择的三级联动