AD JB Toolbox 01

HTML 강좌 / 입력값 검증: required, 길이·범위 제한, 오류 안내

HTML의 기본 입력값 검증은 제출 전에 빈 값, 길이, 숫자 범위, 일부 입력 형식을 확인합니다. required, minlength, max 같은 제약 조건을 쓰면 브라우저가 잘못된 값을 안내할 수 있지만, 서버에서도 반드시 다시 검사해야 합니다.

필수 입력과 길이 제한

<form action="" method="get">
  <label for="nickname">별명(2~20자)</label>
  <input id="nickname" name="nickname" type="text"
         required minlength="2" maxlength="20">
  <button type="submit">확인</button>
</form>

별명을 비운 채 제출하면 브라우저가 입력을 요구합니다. 너무 짧은 값을 직접 입력하면 길이 제한에 맞지 않는다고 안내할 수 있습니다. 안내 문구의 정확한 표현은 브라우저·운영체제·언어 설정에 따라 다릅니다. 입력 조건은 오류가 난 뒤에만 알리지 말고 예제처럼 레이블 가까이에 적으세요.

required는 빈 값을 막고, minlength는 사용자가 입력한 값의 길이를 검사합니다. 둘 중 하나만 있으면 다른 조건까지 자동으로 충족되는 것은 아닙니다. 예제에서 한 글자를 직접 입력해 제출해 보고, 두 글자로 고친 뒤 다시 시도하면 차이를 확인할 수 있습니다. 자바스크립트로 값을 채운 경우에는 길이 제약의 검사 동작이 달라질 수 있어 별도 테스트가 필요합니다.

maxlength="20"은 일반적으로 20자를 넘겨 직접 입력하지 못하게 합니다. 다만 HTML의 길이 제한은 UTF-16 코드 단위로 계산하므로 이모지처럼 눈에 보이는 한 글자와 계산 결과가 다를 수 있습니다. 이런 문자를 허용한다면 실제 입력과 서버 검증을 함께 시험하세요. 자세한 기준은 MDN maxlength 문서에서 확인할 수 있습니다.

숫자 범위와 형식 검증

<form action="" method="get">
  <label for="people">참가 인원(1~10명)</label>
  <input id="people" name="people" type="number"
         min="1" max="10" step="1" required>

  <label for="email">이메일</label>
  <input id="email" name="email" type="email" required>
  <button type="submit">확인</button>
</form>

min과 max는 허용 범위를, step은 값의 간격을 정합니다. type="email"은 기본적인 형식 검사를 하지만 주소가 실제로 존재하는지는 확인하지 않습니다. 양식의 목적에 필요한 검증과 실제 사용자 안내를 별도로 생각해야 합니다.

숫자 입력은 예제처럼 1~10의 정수를 기대할 때 min="1" max="10" step="1"을 함께 적을 수 있습니다. 범위를 벗어난 값이 입력칸에 보이는 것과 유효한 제출값으로 인정되는 것은 다릅니다. 브라우저의 증감 버튼만 시험하지 말고 직접 0, 11, 2.5를 입력해 제출해 보세요.

이 예제는 현재 주소로 GET 요청을 보내는 연습용입니다. 실제 이메일 주소는 입력하지 말고 name@example.com처럼 테스트 값만 사용하세요. 제약을 모두 만족해 제출이 진행되면 주소의 쿼리 문자열에서 people과 email 값을 확인할 수 있습니다. 데이터를 받는 서버 기능은 이 코드에 포함되지 않습니다.

오류 안내를 작성할 때

오류를 색으로만 표시하지 말고 무엇을 어떻게 고쳐야 하는지 글로 알려 주세요. 예를 들어 ‘잘못된 입력’보다 ‘참가 인원은 1~10명 사이의 정수로 입력하세요’가 행동을 안내합니다. 자체 오류 메시지를 구현한다면 어떤 필드의 오류인지 연결하고, 키보드 사용자가 해당 필드로 돌아갈 수 있는지도 확인해야 합니다.

브라우저 검증은 사용자가 개발자 도구로 우회하거나 직접 요청을 보낼 수 있습니다. 계정, 결제, 저장 데이터처럼 중요한 값은 서버에서 다시 검사하세요. 제약 조건과 브라우저 동작은 MDN의 HTML 양식 검증 안내를 참고할 수 있습니다.

novalidate를 form에 넣으면 기본적인 대화형 제출 검증을 건너뛸 수 있습니다. 자체 검증을 구현하는 경우가 아니라면 문제를 숨기려고 이 속성을 추가하지 마세요. 클라이언트 측 검사는 사용자의 입력을 돕는 기능이고, 서버 측 검사는 신뢰할 수 없는 요청을 처리할 때 반드시 필요한 별도 단계입니다.

직접 점검하는 순서

  1. 필수 필드를 비우고 제출해 보세요.
  2. 허용 범위의 바로 바깥 값과 정상 값을 각각 입력해 보세요.
  3. 키보드만 사용해 필드와 제출 버튼으로 이동하고, 오류 메시지를 읽고 값을 고쳐 다시 제출해 보세요.
같은 카테고리의 다른 글
HTML 강좌 / 양식에 안내 문구 추가하기

HTML 강좌 / 양식에 안내 문구 추가하기

HTML 양식에서 label, placeholder, value의 역할을 구분하고 안내 문구를 넣는 방법을 설명합니다. input·textarea 예제와 필수 입력 검사, 빈 값의 제출 동작을 함께 확인할 수 있습니다.

HTML 강좌 / audio, video, iframe으로 미디어와 외부 콘텐츠 삽입하기

HTML 강좌 / audio, video, iframe으로 미디어와 외부 콘텐츠 삽입하기

오디오·비디오 파일과 외부 콘텐츠를 HTML에 삽입할 때 필요한 기본 코드, 자막, 파일 경로, 접근성 확인 사항을 설명합니다.

HTML 강좌 / 시맨틱 요소로 페이지 영역 나누기

HTML 강좌 / 시맨틱 요소로 페이지 영역 나누기

header, nav, main, section, article, aside, footer의 역할을 구분하고 간단한 페이지를 의미에 맞게 구성하는 방법을 설명합니다.

HTML 강좌 / HTML 접근성 기본: 제목·링크·이미지·키보드

HTML 강좌 / HTML 접근성 기본: 제목·링크·이미지·키보드

제목 구조, 의미 있는 링크 문구, 이미지 대체 텍스트와 키보드 조작을 점검하는 HTML 접근성의 기본을 정리합니다.

HTML 강좌 / HTML 오류 찾기와 문서 검사하기

HTML 강좌 / HTML 오류 찾기와 문서 검사하기

HTML 검사 도구로 문법 오류를 찾고 수정한 뒤 링크, 키보드 조작, 모바일 표시까지 확인하는 절차를 안내합니다.

HTML 강좌 / HTML 문서의 기본 구조

HTML 강좌 / HTML 문서의 기본 구조

HTML 문서를 이루는 doctype, html, head, body의 역할과 기본 작성 순서를 예제로 설명합니다. 문서 정보와 페이지 본문을 구분하고 첫 HTML 파일을 직접 만들어 볼 수 있습니다.

HTML 강좌 / HTML의 개념과 웹페이지에서 하는 역할

HTML 강좌 / HTML의 개념과 웹페이지에서 하는 역할

HTML은 웹페이지의 콘텐츠에 구조와 의미를 부여합니다. HTML·CSS·JavaScript의 역할을 비교하고, 간단한 코드가 브라우저에 표시되는 과정과 첫 HTML 파일을 만드는 방법을 알아봅니다.

HTML 강좌 / div와 span은 언제 사용할까?

HTML 강좌 / div와 span은 언제 사용할까?

div와 span의 차이와 사용 기준을 설명하고, 의미 요소가 없는 경우에만 묶음 요소를 쓰는 예제를 보여 줍니다.

HTML 강좌 / 링크(link)

HTML 강좌 / 링크(link)

HTML 링크의 href에 절대경로와 상대경로를 쓰고, 문서 내부 이동·이메일·새 탭·다운로드 링크를 만드는 방법을 예제로 설명합니다.

HTML 강좌 / 텍스트에 의미 부여하기

HTML 강좌 / 텍스트에 의미 부여하기

HTML의 em, strong, q, blockquote, abbr, code, kbd를 상황에 맞게 쓰는 방법을 예제로 설명합니다. 글자의 모양이 아니라 텍스트의 의미를 표시하는 기준을 익힐 수 있습니다.