javascript 구현 날짜 3 단계 연동 드 롭 다운 상자 선택 메뉴

업무 중 생일 편집 자료 편집 과 관련 되 기 때문에 년 월 일 용 상기 사이트 사례:bug 알림:
생일 표시 줄 의[년]또는[월]을 편집 하면 이전에 저 장 된 구체 적 인[일]은 표시 되 지 않 습 니 다.제품 은 어떤 데 이 터 를 편집 하 든 다른 데 이 터 는 변 하지 않 는 다 고 합 니 다.
그리고 코드 를 스스로 고 쳤 습 니 다.

<html>

<head>
 <meta charset="UTF-8"/>
 <meta name="viewport"
   content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"/>
 <title>JS                </title>
</head>

<body>

<form name="reg_testdate">
 <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" onChange="DDD(this.value)">
  <option value="">    </option>
 </select>
</form>

<script language="JavaScript">
 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 - 47); i < (y + 21); 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>
</body>

</html>
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기