HTML <input type="month">: 연과 월 선택

HTML <input type="month">: 연과 월 선택

month 유형의 <input> 요소는 사용자가 연도와 월을 선택할 수 있는 컨트롤입니다. 입력 컨트롤의 외형은 브라우저와 운영체제에 따라 다릅니다. 값은 YYYY-MM 형식으로 정규화됩니다.

<label for="month">시작할 월을 선택하세요:</label>
<input type="month"
       id="month"
       max="2077-01"
       min="2077-12"
       value="2077-06">
input {
  margin-top: 0.4rem;
}

불러오는 중...

month 유형의 값은 유효한 HTML 연/월 문자열입니다.

사용자의 화면에 나타나는 날짜의 형식은 month 입력 칸이 실제로 저장하는 값과는 다른 형식을 사용합니다. 사용자에게 보이는 날짜 형식은 브라우저의 로케일에 따라 달라지지만, 실제 저장 값과 value 특성은 항상 YYYY-MM 형식을 사용합니다.

JavaScript에서는 HTMLInputElementvalue로 값을 가져올 수 있습니다.

const dateControl = document.querySelector('input[type="month"]')
dateControl.value = '2017-06'
console.log(dateControl.value) // '2017-06'

추가 특성

date 유형은 <input> 요소가 공유하는 특성을 지원하지만, 일부는 외관에 영향을 주지 못할 수도 있습니다. 예를 들어 sizeplaceholder 특성을 지정해도 차이가 없을 수 있습니다.

max

선택할 수 있는 날짜의 최대 한계입니다. 입력한 값이 이 날짜 이후인 경우 제약 검증에 실패합니다. max 특성은 반드시 YYYY-MM 형식의 날짜 문자열이어야 합니다. 유효하지 않은 값을 입력하면 최대 한계를 지정하지 않은 것으로 취급합니다.

maxmin 특성을 모두 지정하는 경우, maxmin과 같거나 그 이후를 가리키는 날짜 문자열이어야 합니다.

min

선택할 수 있는 날짜의 최소 한계입니다. 입력한 값이 이 날짜 이전인 경우 제약 검증에 실패합니다. min 특성은 반드시 YYYY-MM 형식의 날짜 문자열이어야 합니다. 유효하지 않은 값을 입력하면 최소 한계를 지정하지 않은 것으로 취급합니다.

maxmin 특성을 모두 지정하는 경우, minnax와 같거나 그 이후를 가리키는 날짜 문자열이어야 합니다.

readonly

입력 칸을 읽기 전용으로 만들어 사용자가 편집할 수 없도록 하는 불리언 특성입니다. 하지만 JavaScript를 사용해 HTMLInputElementvalue 속성을 직접 설정하면 값을 바꿀 수 있습니다.

읽기 전용 입력 칸에는 사용자가 값을 입력할 수 없으므로, readonly를 추가한 요소에 required 특성을 추가하면 아무 효과도 없습니다.

step

선택 가능한 값의 간격입니다. 숫자 또는 any를 지정할 수 있습니다. 간격에 맞는 날짜만 선택할 수 있습니다. 간격의 시작점은 min 특성이 존재하면 min, value가 존재하면 value, 둘 다 존재하지 않으면 1970-01-01입니다.

숫자를 지정할 경우, 수의 단위는 1개월입니다. step의 기본 값은 1이므로 기본 간격은 1개월입니다. any를 지정하거나 특성을 누락할 경우 1을 지정한 것과 같습니다.

유효성 검증

month 유형의 기본 설정에서는 값의 형식만 검증합니다. 브라우저 기본 인터페이스에 유효하지 않은 형식의 값을 입력할 수 없다는 점은 유용합니다.

minmax 특성으로 선택 가능한 날짜를 제한하는 경우 (선택 가능한 날짜 범위 제한하기를 참고하세요), 범위를 벗어난 값을 제출하려고 하면 오류를 표시합니다.

required 특성으로 날짜를 반드시 입력하게 설정할 수 있습니다. 사용자가 날짜를 입력하지 않고 양식을 제출하려고 하면 브라우저가 오류를 표시합니다.

HTML 양식 검증은 서버에서 입력 데이터를 검증하는 것의 대안이 될 수 없습니다. HTML 코드를 직접 편집해서 검증을 우회하거나 아예 삭제하는 게 너무나 쉽기 때문입니다. 게다가 HTML을 아예 거치지 않고 서버로 직접 요청을 전송해버릴 수도 있습니다. 서버 측 코드가 입력 데이터 검증에 실패한다면 잘못된 형식이나 유형이나 크기의 데이터가 데이터베이스에 저장되어 큰 문제가 발생할 수 있습니다.

예제

선택 가능한 날짜 범위 제한하기

minmax 특성을 지정하면 사용자가 선택할 수 있는 날짜를 특정 범위로 제한할 수 있습니다. 이 예제에서는 2022년 4월부터 2022년 6월까지의 날짜만 선택할 수 있도록 입력 범위를 제한합니다.

<label>프로젝트 배포월을 선택하세요:
  <input type="date" name="schedule" min="2022-04" max="2022-06" />
</label>

불러오는 중...

명세

브라우저 호환성

MDN browser-compat-data
데스크톱모바일
iOSAndroid
SafariChromeFirefoxSafariChromeFirefoxSamsung Internet
type="month"

같이 보기

마지막 수정:

CC BY-SA 4.0 unless otherwise noted. See LICENSE.