자바스크립트로 주간(일~토) 셀렉트 박스 만들기

munilive
munilive

년도와 월을 선택하면 해당 년/월에 포함 되어있는 주 시작일과 종료일을 셀렉트박스로 만들게 하는 함수 입니다.
아래 이미지와 같은 모습이며, 예제 보기를 통해서 구현된 페이지를 확인 할 수 있습니다.

{% figure [caption:“자바스크립트로 주간(일~토) 셀렉트 박스 모습”] %} 자바스크립트로 주간(일~토) 셀렉트 박스 모습 {% endfigure %}


Code

function makeWeekSelectOptions() {
  var year = $('#sh_year').val();
  var month = $('#sh_month').val();

  var today = new Date();

  var sdate = new Date(year, month - 1, 01);
  var lastDay = new Date(
    sdate.getFullYear(),
    sdate.getMonth() + 1,
    0,
  ).getDate();
  var endDate = new Date(sdate.getFullYear(), sdate.getMonth(), lastDay);

  var week = sdate.getDay();
  sdate.setDate(sdate.getDate() - week);
  var edate = new Date(sdate.getFullYear(), sdate.getMonth(), sdate.getDate());

  var obj = document.getElementById('sh_week');
  obj.options.length = 0;
  var seled = '';
  while (endDate.getTime() >= edate.getTime()) {
    var sYear = sdate.getFullYear();
    var sMonth = sdate.getMonth() + 1;
    var sDay = sdate.getDate();

    sMonth = sMonth < 10 ? '0' + sMonth : sMonth;
    sDay = sDay < 10 ? '0' + sDay : sDay;

    var stxt = sYear + '-' + sMonth + '-' + sDay;

    edate.setDate(sdate.getDate() + 6);

    var eYear = edate.getFullYear();
    var eMonth = edate.getMonth() + 1;
    var eDay = edate.getDate();

    eMonth = eMonth < 10 ? '0' + eMonth : eMonth;
    eDay = eDay < 10 ? '0' + eDay : eDay;

    var etxt = eYear + '-' + eMonth + '-' + eDay;

    if (
      today.getTime() >= sdate.getTime() &&
      today.getTime() <= edate.getTime()
    ) {
      seled = stxt + '|' + etxt;
    }

    obj.options[obj.options.length] = new Option(
      stxt + '~' + etxt,
      stxt + '|' + etxt,
    );

    sdate = new Date(
      edate.getFullYear(),
      edate.getMonth(),
      edate.getDate() + 1,
    );
    edate = new Date(sdate.getFullYear(), sdate.getMonth(), sdate.getDate());
  }

  if (seled) obj.value = seled;
}
<select name="sh_year" id="sh_year" onchange="makeWeekSelectOptions();">
  <option value="2013" selected="selected">2013년</option>
</select>

<select name="sh_month" id="sh_month" onchange="makeWeekSelectOptions();">
  <option value="01">01월</option>
  <option value="02">02월</option>
  <option value="03">03월</option>
  <option value="04">04월</option>
  <option value="05">05월</option>
  <option value="06">06월</option>
  <option value="07">07월</option>
  <option value="08" selected="selected">08월</option>
  <option value="09">09월</option>
  <option value="10">10월</option>
  <option value="11">11월</option>
  <option value="12">12월</option>
</select>

<select name="sh_week" id="sh_week"></select>
munilive

munilive

Backend Application Developer

Share

Comments

Related Posts

JQuery : 클래스 이름만으로 페이지 전체에 롤오버 이미지 쉽게 적용하기

JQuery : 클래스 이름만으로 페이지 전체에 롤오버 이미지 쉽게 적용하기

마우스 오버 시 변경될 이미지를 쌍으로 만들어 사용할 경우 지정된 class만으로 롤오버 이미지를 자동 적용하는 스크립트에 대한 코드입니다.

munilive munilive ·
datepicker 시작일과 종료일 설정 시 사용하기 좋은 팁

datepicker 시작일과 종료일 설정 시 사용하기 좋은 팁

jQuery UI Datepicker를 이용하여 시작/종료일 설정 시 시작일은 종료일 이후 날짜를, 종료일은 시작일 이전날짜를 선택하지 못하게 하는 방법에 대한 설명 글이다.

munilive munilive ·
JQuery에서 Select Box 제어 하기

JQuery에서 Select Box 제어 하기

Jquery에서 Selectbox를 컨트롤하는 방법에 대한 예제 코드 모음 글이다.

munilive munilive ·