Ch.7 HTML 폼 — 사용자 입력 받기

유효성 검사와 스타일

required, minlength, pattern 속성으로 입력을 검증할 수 있다CSS :valid/:invalid 의사 클래스를 사용할 수 있다폼에 시각적 피드백을 추가할 수 있다

이메일 칸에 빈 값을 넣으면 빨간 테두리가 뜨는 이유는?

서버에 잘못된 데이터가 전송되면 오류가 발생합니다. HTML 자체에 검증 속성을 추가하면 브라우저가 전송 전에 미리 걸러줍니다.

잘못된 입력을 어떻게 미리 막을까?

HTML 유효성 검사 — required, minlength, pattern으로 서버 전송 전에 입력을 검증합니다.


article

핵심 내용

HTML만으로도 입력을 검증할 수 있습니다

<form action="/signup" method="POST">
  <!-- required: 필수 입력 -->
  <input type="text" name="name" required>

  <!-- minlength / maxlength: 글자 수 제한 -->
  <input type="password" name="pw"
         minlength="8" maxlength="20" required>

  <!-- pattern: 정규식 패턴 매칭 -->
  <input type="tel" name="phone"
         pattern="[0-9]{3}-[0-9]{4}-[0-9]{4}"
         placeholder="010-1234-5678">

  <!-- min / max: 숫자 범위 -->
  <input type="number" name="age"
         min="1" max="150">

  <button type="submit">제출</button>
</form>

유효한 입력에는 초록색, 잘못된 입력에는 빨간색!

/* 유효한 입력 — 초록 테두리 */
input:valid {
  border: 2px solid #4ECDC4;
  outline: none;
}

/* 잘못된 입력 — 빨간 테두리 */
input:invalid {
  border: 2px solid #FF6B6B;
  outline: none;
}

/* 포커스 시 강조 */
input:focus {
  box-shadow: 0 0 0 3px rgba(78,205,196,0.3);
}

:valid = 유효성 검사를 통과한 input에 적용 :invalid = 유효성 검사에 실패한 input에 적용 :focus = 현재 커서가 위치한 input에 적용 이 의사 클래스들을 조합하면 실시간 피드백이 완성됩니다!

유효성 검사 + CSS로 완성된 폼을 만들어봅시다

입력이 비어있으면 제출을 막는 HTML 속성은?

CSS의 :invalid 의사 클래스는 JavaScript 없이도 동작한다

다음 중 시맨틱 HTML 태그로 페이지 하단 영역을 나타내는 것은?

HTML 폼 마스터!

key

핵심 용어

🚨

required

반드시 입력해야 제출 가능

📏

minlength

최소 글자 수 제한

📐

maxlength

최대 글자 수 제한

🔍

pattern

정규식 패턴과 일치해야 함

🔢

min / max

숫자의 최솟값/최댓값 제한

edit_note

정리 노트

유효성 검사와 스타일

HTML 유효성 속성

required
필수 입력 — 비어 있으면 제출 불가
minlength/maxlength
텍스트의 최소/최대 글자 수 제한
pattern
정규표현식으로 입력 형식 지정
placeholder
입력 전 안내 텍스트 표시 (회색)

CSS 가상 클래스

:focus
입력 필드에 커서가 위치할 때 스타일
:valid / :invalid
유효성 통과/실패 시 스타일

HTML 유효성 검사는 기본 보호막, 서버 측 검증은 반드시 별도로 구현하세요.

check_circle

핵심 정리

  • 1required, minlength, pattern으로 입력 유효성 검사
  • 2:valid / :invalid CSS로 실시간 시각적 피드백
  • 3HTML 검증만으로 JavaScript 없이 기본 검증 가능

퀴즈와 인터랙션으로 더 깊이 학습하세요

play_circle인터랙티브 레슨 시작