오류 정정
입력 오류가 생겼을 때 어느 칸이 왜 틀렸는지 알려주고 고칠 수 있게 하는 방법. aria-invalid·aria-describedby로 오류 문구를 연결하고, 첫 오류 칸으로 초점을 옮기는 코드를 정리했습니다.
마지막 수정
무엇을 요구하나요?
입력 오류가 있을 때 사용자가 오류를 알아차리고, 원인을 이해하고, 고칠 수 있어야 합니다.
- 어느 칸이 틀렸는지 알린다
- 왜 틀렸는지, 어떻게 고치면 되는지 글자로 알린다
- 고칠 수 있게 해당 칸으로 이동시킨다 (입력한 다른 값은 유지)
자주 틀리는 예
1. 빨간 테두리만 표시
<input id="email" class="is-error">
<label for="email">이메일</label>
<input id="email" aria-invalid="true" aria-describedby="email-error">
<p id="email-error" class="error">이메일 형식이 아닙니다. 예: name@example.com</p>
aria-invalid="true": 화면 낭독기가 “잘못된 입력”이라고 알려줍니다.aria-describedby: 칸에 들어가면 오류 문구를 함께 읽습니다.
2. 제출 후 초점이 그대로라 오류를 모름
form.addEventListener('submit', (e) => {
if (!validate()) e.preventDefault();
});
form.addEventListener('submit', (e) => {
const errors = validate(); // [{ field, message }]
if (!errors.length) return;
e.preventDefault();
errors.forEach(({ field, message }) => showError(field, message));
errors[0].field.focus(); // 첫 오류 칸으로
summary.textContent = `입력 오류 ${errors.length}건이 있습니다.`; // role="alert" 영역
});
3. 오류 후 입력한 값이 모두 지워짐
서버에서 오류를 돌려줄 때 입력한 값을 모두 지우면 처음부터 다시 입력해야 합니다. 비밀번호 같은 민감한 값을 빼고는 입력값을 유지하세요.
확인하는 방법
- 필수 칸을 비우고, 형식이 틀린 값을 넣고 제출해 보세요. 어느 칸, 왜, 어떻게가 글자로 나오는지 확인하세요.
- 화면 낭독기로 제출했을 때 오류가 읽히는지, 초점이 오류 칸으로 가는지 확인하세요.
- 오류 표시가 색으로만 되어 있지 않은지 확인하세요. (5.4.1 색에 무관한 콘텐츠 인식 참고)
직접 점검해 보기
- 페이지 검사 — 확장 프로그램으로 열린 페이지에서 이 항목과 관련된 문제를 찾습니다
- 수동 점검표 — 33개 항목을 직접 확인하고 기록합니다
- 자주 틀리는 10개 항목 맛보기 점검표 — 무료 엑셀
자주 묻는 질문
alert 창으로 오류를 알려도 되나요?
alert는 화면 낭독기가 읽어주기는 하지만, 닫고 나면 어느 칸이 틀렸는지 다시 찾아야 합니다. 오류 칸 옆에 문구를 남기고 초점을 그 칸으로 옮기는 방식이 더 좋습니다.
함께 보면 좋은 항목
이 글은 셀프 점검을 돕는 안내이며 공식 해설이나 인증 심사 기준을 대신하지 않습니다. 정확한 기준은 한국형 웹 콘텐츠 접근성 지침 2.2 원문을 확인하세요.