年月日三级联动下拉框

三级联动下拉框

最近写东西需要用到,就写下来记录一下
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>年月日三级联动下拉框</title>
</head><body>
  <h4>请选择年月日</h4>
  <select id="year" onChange="changeYear(this)"></select> -
  <select id="month" onChange="changeMonth(this)"></select> -
  <select id="date"></select>
  <br><br>
</body><script>
  var year = getValue("year");
  var month = getValue("month");
  var date = getValue("date");
  
  var D = new Date();  
  var yy = parseInt(D.getFullYear());  //年
  var mm = D.getMonth()+1;   //月
  var dd = parseInt(D.getDate());     //日
  var oldYY = yy-150;    //设置最老年份
  var bigYY = new Array('1','3','5','7','8','10','12');  //列出大月的年份
  var allDD;          //初始化每月天数
  
  creatYear();  //开始生成年下拉列表
  creatMonth(); //开始生成月下拉列表
  creatDate(yy,mm); //开始生成日下拉列表
  
  //通过id获取值的函数
  function getValue(id){
    var value=document.getElementById(id);
    return value;
  }
  
  //生成年下拉列表
  function creatYear(){
    //初始化
    var pyy = document.createElement('option');
    pyy.innerText='选择 年';
    pyy.value=0;
    year.appendChild(pyy);
    
    //循环所有年份
    for(i=yy;i>=oldYY;i--){
      pyy = document.createElement('option');
      pyy.innerText=i+' 年';
      pyy.value=i;
      year.appendChild(pyy);
    }
  }
  
  //生成月下拉列表
  function creatMonth(){
    //初始化
    var pmm = document.createElement('option');
    pmm.innerText='选择 月';
    pmm.value=0;
    month.appendChild(pmm);
    
    //判断是否选择了年
    if(year.selectedOptions[0].value==0)
      return;
    
    //循环所有月份
    for(i=1;i<=12;i++){
      pmm=document.createElement('option');
      pmm.innerText=i+' 月'
      pmm.value = i;
      month.appendChild(pmm);
    }
  }
  
  //生成日下拉列表
  function creatDate(yy,mm){
    //初始化
    var pdd = document.createElement('option');
    pdd.innerText='选择 日';
    pdd.value=0;
    date.appendChild(pdd);
    
    //判断是否选择了月
    if(month.selectedOptions[0].value==0)
      return;
    var day = isAdd(yy,mm);
    
    //循环所有日期
    for(i=1;i<=day;i++){
      pdd=document.createElement('option');
      pdd.innerText=i+' 日'
      pdd.value = i;
      date.appendChild(pdd);
    }
  }
  
  //判断并产生改月的天数
  function isAdd(yy,mm){
    
    if(bigYY.indexOf(mm)!=-1)
      allDD=31;
    else{
      allDD=30;
      if(2==mm &&((yy%4==0&&yy%100!=0)||yy%400==0))
        allDD=29;
      
      else if(2==mm &&((yy%4!=0&&yy%100==0)||yy%400!=0))
        allDD=28;
      
    }
    return allDD;
  }
  
  //年份改变时调用
  function changeYear(obj){
    month.innerHTML = null;
    date.innerHTML = null;
    var yy = obj.selectedOptions[0].value;
    creatMonth();
    creatDate(yy,mm);
  }
  
  //月份改变时调用
  function changeMonth(obj){
    date.innerHTML = null;
    var yy = year.selectedOptions[0].value;
    var mm = obj.selectedOptions[0].value;
    creatDate(yy,mm);
  }
</script></html>
发布了4 篇原创文章 · 获赞 6 · 访问量 365

猜你喜欢

转载自blog.csdn.net/weixin_44174530/article/details/103898333