정의 및 사용 방법
<input> 태그의 type="checkbox"는 체크박스를 나타냅니다.
단일한 값으로 체크와 취소를 번갈아가며 할 수 있는 컨트롤입니다.
일반적으로 정사각형이지만 모서리가 둥글게 되어 있을 수도 있습니다.
기본 예제
<label for="opt-in">이메일 수신 동의</label>
<input type="checkbox" id="opt-in">
<input type="checkbox">의 암시적인 role 속성의 값은 checkbox입니다.
관련 속성 사용하기
<input type="checkbox">와 관련된 속성에 대해 알아보겠습니다.
checked 속성
이 속성은 부울 속성(boolean attribute)입니다. 값을 별도로 작성하지 않고 속성만 작성합니다.
<input type="checkbox" checked>
disabled 속성
체크박스를 비활성시키려면 disabled 속성을 사용하세요.
이 속성은 부울 속성(boolean attribute)입니다. 값을 별도로 작성하지 않고 속성만 작성합니다.
<input type="checkbox" disabled>
required 속성
required 속성은 폼 제출 시 사용자가 사전에 반드시 체트박스에 체크해야 하는 필수(required) 컨트롤 요소임을 나타냅니다. 이 속성은 부울 속성(boolean attribute)입니다. 값을 별도로 작성하지 않고 속성만 작성합니다.
<form>
<label for="opt-in">이메일 수신 동의(*필수)</label>
<input type="checkbox" id="opt-in" required> <!-- 필수 입력 필드로 지정 -->
<button type="submit">제출</button>
</form>
브라우저가 필수 입력에 대한 오류 메시지를 표시하는 것을 확인할 수 있습니다.
여러 개의 체크박스 사용하기
위에서 본 코드 예제들은 하나의 체크박스에 관련된 것입니다. 실제로 여러 개의 체크박스를 처리하는 코드를 살펴보겠습니다.
다음의 예제에는 사용자가 관심이 있는 웹 개발 언어를 선택할 수 있도록 여러 개의 체크박스가 있습니다. 예제처럼 <fieldset> 태그로 체크박스를 그룹화하면 됩니다.
<fieldset>
<legend>관심이 있는 웹 개발 언어를 선택하세요.</legend>
<div>
<input type="checkbox" id="html">
<label for="html">HTML</label>
</div>
<div>
<input type="checkbox" id="css">
<label for="css">CSS</label>
</div>
<div>
<input type="checkbox" id="js">
<label for="js">JavaScript</label>
</div>
</fieldset>
라디오 버튼과의 차이점
라디오 버튼은 체크박스와 유사하지만 중요한 차이점이 있습니다.
라디오 버튼은 <input type="radio">로 나타냅니다.
단일한 컨트롤에 체크와 체크 해제
| 체크박스 | 단일한 체크박스에 번갈아가며 체크와 체크 해제를 할 수 있습니다. |
|---|---|
| 라디오 버튼 | 단일한 라디오 버튼에 번갈아가며 체크와 체크 해제를 할 수 없습니다. |
<input type="checkbox">
<input type="radio">
그룹화된 여러개의 컨트롤로 체크하기
그룹화된 여러 개의 체크박스를 사용할 경우 사용자는 각각의 체크 박스를 복수로 선택할 수 있는 반면에 라디오 버튼은 전체 중에서 하나만 선택이 가능해야 합니다.
이렇게 구현하려면 그룹화된 체크박스나 라디오 버튼에는 모든 동일한 name 속성과 값을 지정해야 하지만, value 속성의 값은 각각 지정합니다.
동일한 name을 공유하는 체크박스에서는 여러 개의 체크박스를 '하나의 그룹'으로 인식하지만, 오직 하나의 체크박스만 선택하는 것이 아니라, 여러 개의 체크박스를 선택할 수 있다는 점에서 동일한 name을 공유하는 라디오 버튼 그룹과는 다른점입니다.
name 속성은 컨트롤의 이름을 나타냅니다.
양식이 제출될 때 이 이름이 컨트롤을 식별하는데 사용됩니다.
<fieldset>
<legend>관심이 있는 웹 개발 언어를 선택하세요.</legend>
<div>
<input type="checkbox" id="html" name="interest" value="html">
<label for="html">HTML</label>
</div>
<div>
<input type="checkbox" id="css" name="interest" value="interest">
<label for="css">CSS</label>
</div>
<div>
<input type="checkbox" id="js" name="interest" value="interest">
<label for="js">JavaScript</label>
</div>
</fieldset>
<fieldset>
<legend>관심이 있는 웹 개발 언어를 선택하세요.</legend>
<div>
<input type="radio" id="html" name="interest" value="html">
<label for="html">HTML</label>
</div>
<div>
<input type="radio" id="css" name="interest" value="interest">
<label for="css">CSS</label>
</div>
<div>
<input type="radio" id="js" name="interest" value="interest">
<label for="js">JavaScript</label>
</div>
</fieldset>
그룹화된 체크박스에서 required 속성 사용
체크박스 그룹 전체를 필수 항목으로 지정하려면 그룹 내에서 최소한 하나의 체크박스를 선택해서 required 속성 적용하면 체크박스 그룹 전체가 필수 항목으로 그룹핑됩니다. 하지만 코드의 가독성을 위해 체크박스 그룹에 속해 있는 모든 체크박스에 required 속성을 적용하는 것이 더 좋습니다.
그룹 내에서 최소한 하나의 체크박스에 지정
체크박스 그룹 내에서 최소한 하나의 체크박스를 선택해서 required 속성 적용하면 체크박스 그룹 전체가 필수 항목으로 그룹핑됩니다.
<form>
<fieldset>
<legend>관심이 있는 웹 개발 언어를 선택하세요. (최소 1개 선택)</legend>
<div>
<input type="checkbox" id="html" name="favorite" required> <!-- 그룹 내에서 최소한 하나의 체크박스를 선택 -->
<label for="html">HTML</label>
</div>
<div>
<input type="checkbox" id="css" name="favorite">
<label for="css">CSS</label>
</div>
<div>
<input type="checkbox" id="js" name="favorite">
<label for="js">JavaScript</label>
</div>
<button type="submit">제출</button>
</fieldset>
</form>
브라우저가 필수 입력에 대한 오류 메시지를 표시하는 것을 확인할 수 있습니다.
그룹 내에 속한 모든 체크박스에 지정
코드의 가독성을 위해 체크박스 그룹에 속해 있는 모든 체크박스에 required 속성을 적용하는 것이 더 좋습니다.
<form>
<fieldset>
<legend>관심이 있는 웹 개발 언어를 선택하세요. (최소 1개 선택)</legend>
<div>
<input type="checkbox" id="html" name="favorite" required>
<label for="html">HTML</label>
</div>
<div>
<input type="checkbox" id="css" name="favorite" required>
<label for="css">CSS</label>
</div>
<div>
<input type="checkbox" id="js" name="favorite" required>
<label for="js">JavaScript</label>
</div>
<button type="submit">제출</button>
</fieldset>
</form>
브라우저가 필수 입력에 대한 오류 메시지를 표시하는 것을 확인할 수 있습니다.
접근성 고려 사항
<input type="checkbox">를 사용할 때에는 <label>을 함께 사용해야 합니다.
자세한 사항은 <input> 태그의 접근성 고려 사항을 참조하세요.
브라우저 호환성
| 속성 |
데스크탑 Chrome
|
데스크탑데스크탑 Edge
|
데스크탑 Firefox
|
Safari
|
|---|---|---|---|---|
<input type="checkbox"> |
1 | 12 | 1 | 1 |
checked
|
1 | 12 | 1 | 1 |
disabled
|
1 | 12 | 1 | 1 |
name
|
1 | 12 | 1 | 1 |
명세서
| 명세서 사양 | |
|---|---|
<input type="checkbox">
|
HTML Standard #checkbox-state-(type=checkbox) |