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

munilive
munilive

웹 프로그래밍을 하다 보면 가끔 시작일과 종료일을 입력받는 프로그램을 제작하곤 한다. 사용자에게 날짜를 입력받아야 하는데 텍스트 박스만 떡하니 놔두면 사용자가 제대로 된 데이터를 입력하지 않아 에러가 발생 될 수 있다. 이럴 경우를 대비하여 보통 달력을 띄우거나 SelectBox로 만들게 되는데 SelectBox 보다는 jQuery UI에서 지원하는 datepicker를 이용하는 게 훨씬 쉬울 것이다.

datepicker 를 이용하면 사용자에게 날짜를 입력받기가 너무나도 쉽다. 하지만 시작일과 종료일을 받아야 하는 상황에서 사용자가 시작일을 종료일보다 뒤의 날짜를 선택하거나 종료일을 시작일 보다 앞의 날짜를 선택한다면 원하는 결과를 가져올 수 없을 것이다.

그럼 datepicker 로 시작일을 선택할 때 종료일보다 나중의 날은 선택할 수 없게 하고, 종료일을 선택할 때는 시작일 이후로만 선택 할 수 있게 한다면?
위에서 말한 오류는 충분히 방지 할 수 있을 것이다.
그렇다면 datepicker 에서 시작일 일에는 자동으로 종료일보다 먼저인 날짜만 종료일에는 자동으로 시작일보다 나중인 날짜만 선택하는 아래 소스를 참고하자.!

$(document).ready(function () {
  $.datepicker.regional['ko'] = {
    closeText: '닫기',
    prevText: '이전달',
    nextText: '다음달',
    currentText: '오늘',
    monthNames: [
      '1월(JAN)',
      '2월(FEB)',
      '3월(MAR)',
      '4월(APR)',
      '5월(MAY)',
      '6월(JUN)',
      '7월(JUL)',
      '8월(AUG)',
      '9월(SEP)',
      '10월(OCT)',
      '11월(NOV)',
      '12월(DEC)',
    ],
    monthNamesShort: [
      '1월',
      '2월',
      '3월',
      '4월',
      '5월',
      '6월',
      '7월',
      '8월',
      '9월',
      '10월',
      '11월',
      '12월',
    ],
    dayNames: ['', '', '', '', '', '', ''],
    dayNamesShort: ['', '', '', '', '', '', ''],
    dayNamesMin: ['', '', '', '', '', '', ''],
    weekHeader: 'Wk',
    dateFormat: 'yy-mm-dd',
    firstDay: 0,
    isRTL: false,
    showMonthAfterYear: true,
    yearSuffix: '',
    showOn: 'both',
    buttonText: '달력',
    changeMonth: true,
    changeYear: true,
    showButtonPanel: true,
    yearRange: 'c-99:c+99',
  }
  $.datepicker.setDefaults($.datepicker.regional['ko'])

  $('#sdate').datepicker()
  $('#sdate').datepicker('option', 'maxDate', $('#edate').val())
  $('#sdate').datepicker('option', 'onClose', function (selectedDate) {
    $('#edate').datepicker('option', 'minDate', selectedDate)
  })

  $('#edate').datepicker()
  $('#edate').datepicker('option', 'minDate', $('#sdate').val())
  $('#edate').datepicker('option', 'onClose', function (selectedDate) {
    $('#sdate').datepicker('option', 'maxDate', selectedDate)
  })
})

datepicker의 메소드 중 onClose를 이용하여 사용자가 날짜를 선택하면 반대 달력의 maxDate와 minDate를 지정하여 선택하지 못하도록 하는 방식이다.
위 코드를 이용하여 실제 구현한 예제 링크를 추가 한다.

![DatePicker 시작일/종료일 설정의 예시 화면](/assets/post_data/2013/date-picker-start-end.png)
DatePicker 시작일/종료일 설정의 예시 화면
munilive

munilive

Backend Application Developer

Share

Comments

Related Posts

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

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

작업중에 얻은 소스를 변경한것. 기존에는 지정한 파일 확장자의 이미지 만을 사용했다면 변경한 것에는 이미지 파일에 상관 없이 클래스명이 일때 무조건 확장자 앞에 의 유무에…

munilive munilive ·
jquery를 이용한 슬라이드(slides)배너

jquery를 이용한 슬라이드(slides)배너

jquery에서 사용할 수 있는 slidesjs라는 좋은 툴이 있지만, 퍼블리셔가 작업해서준 HTML 구조와 CSS 변경 작업이 어려워서 직접 만들었습니다. slidesjs 보…

munilive munilive ·
`jquery datepicker`에서 년도와 월만 선택 가능하게 하기

`jquery datepicker`에서 년도와 월만 선택 가능하게 하기

를 이용하여 인터페이스를 제공하다 보면 가끔 년과 월만 선택하게 하도록 하고 싶을 때가 있습니다. 이럴경우 이용하기에 좋은 방법 입니다. 아래 코드를 참고 하세요. Javasc…

munilive munilive ·