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에서는 HTMLInputElement
의 value
로 값을 가져올 수 있습니다.
const dateControl = document.querySelector('input[type="month"]')
dateControl.value = '2017-06'
console.log(dateControl.value) // '2017-06'
추가 특성
date
유형은 <input>
요소가 공유하는 특성을 지원하지만, 일부는 외관에 영향을 주지 못할 수도 있습니다. 예를 들어 size
와 placeholder
특성을 지정해도 차이가 없을 수 있습니다.
list
현재 문서 내에 존재하는
<datalist>
요소의id
특성을 지정하면 사전 설정된 추천 입력값을 보여줄 수 있습니다.<datalist>
에 정의됐지만 현재<input>
유형과 호환되지 않는 값은 추천 목록에 포함되지 않습니다. 추천 목록은 추천 사항일 뿐이며 필수 사항이 아니므로 사용자는 목록을 무시하고 직접 값을 입력할 수 있습니다.max
선택할 수 있는 날짜의 최대 한계입니다. 입력한 값이 이 날짜 이후인 경우 제약 검증에 실패합니다.
max
특성은 반드시YYYY-MM
형식의 날짜 문자열이어야 합니다. 유효하지 않은 값을 입력하면 최대 한계를 지정하지 않은 것으로 취급합니다.max
와min
특성을 모두 지정하는 경우,max
는min
과 같거나 그 이후를 가리키는 날짜 문자열이어야 합니다.min
선택할 수 있는 날짜의 최소 한계입니다. 입력한 값이 이 날짜 이전인 경우 제약 검증에 실패합니다.
min
특성은 반드시YYYY-MM
형식의 날짜 문자열이어야 합니다. 유효하지 않은 값을 입력하면 최소 한계를 지정하지 않은 것으로 취급합니다.max
와min
특성을 모두 지정하는 경우,min
은nax
와 같거나 그 이후를 가리키는 날짜 문자열이어야 합니다.readonly
입력 칸을 읽기 전용으로 만들어 사용자가 편집할 수 없도록 하는 불리언 특성입니다. 하지만 JavaScript를 사용해 HTMLInputElement의
value
속성을 직접 설정하면 값을 바꿀 수 있습니다.읽기 전용 입력 칸에는 사용자가 값을 입력할 수 없으므로,
readonly
를 추가한 요소에required
특성을 추가하면 아무 효과도 없습니다.step
선택 가능한 값의 간격입니다. 숫자 또는
any
를 지정할 수 있습니다. 간격에 맞는 날짜만 선택할 수 있습니다. 간격의 시작점은min
특성이 존재하면min
,value
가 존재하면value
, 둘 다 존재하지 않으면1970-01-01
입니다.숫자를 지정할 경우, 수의 단위는 1개월입니다.
step
의 기본 값은1
이므로 기본 간격은 1개월입니다.any
를 지정하거나 특성을 누락할 경우1
을 지정한 것과 같습니다.
유효성 검증
month
유형의 기본 설정에서는 값의 형식만 검증합니다. 브라우저 기본 인터페이스에 유효하지 않은 형식의 값을 입력할 수 없다는 점은 유용합니다.
min
과 max
특성으로 선택 가능한 날짜를 제한하는 경우 (선택 가능한 날짜 범위 제한하기를 참고하세요), 범위를 벗어난 값을 제출하려고 하면 오류를 표시합니다.
required
특성으로 날짜를 반드시 입력하게 설정할 수 있습니다. 사용자가 날짜를 입력하지 않고 양식을 제출하려고 하면 브라우저가 오류를 표시합니다.
HTML 양식 검증은 서버에서 입력 데이터를 검증하는 것의 대안이 될 수 없습니다. HTML 코드를 직접 편집해서 검증을 우회하거나 아예 삭제하는 게 너무나 쉽기 때문입니다. 게다가 HTML을 아예 거치지 않고 서버로 직접 요청을 전송해버릴 수도 있습니다. 서버 측 코드가 입력 데이터 검증에 실패한다면 잘못된 형식이나 유형이나 크기의 데이터가 데이터베이스에 저장되어 큰 문제가 발생할 수 있습니다.
예제
선택 가능한 날짜 범위 제한하기
min
과 max
특성을 지정하면 사용자가 선택할 수 있는 날짜를 특정 범위로 제한할 수 있습니다. 이 예제에서는 2022년 4월부터 2022년 6월까지의 날짜만 선택할 수 있도록 입력 범위를 제한합니다.
<label>프로젝트 배포월을 선택하세요:
<input type="date" name="schedule" min="2022-04" max="2022-06" />
</label>
불러오는 중...
명세
브라우저 호환성
데스크톱 | 모바일 | ||||||
---|---|---|---|---|---|---|---|
iOS | Android | ||||||
Safari | Chrome | Firefox | Safari | Chrome | Firefox | Samsung Internet | |
type="month" |
같이 보기
- 날짜 입력 칸:
<input type="datetime-local">
- 날짜와 시간 입력 칸:
<input type="datetime-local">
- 시간 입력 칸:
<input type="time">