Stimulus를 활용한 클라이언트 측 유효성 검사 메시지 개선

Better Client-side Validations Using Stimulus - Unagi

작성자
발행일
2025년 08월 20일

핵심 요약

  • 1 네이티브 HTML `pattern` 및 `title` 속성을 활용하여 클라이언트 측 유효성 검사를 효율적으로 구현합니다.
  • 2 CSS의 `:has()` 셀렉터와 `::after` 의사 요소를 사용하여 유효성 검사 실패 시 입력 필드 아래에 메시지를 표시합니다.
  • 3 Stimulus 컨트롤러를 통해 입력 필드의 `title` 속성 내용을 동적으로 가져와 사용자 정의 오류 메시지를 표시하고, 다양한 입력 유형에 재사용 가능한 솔루션을 제공합니다.

도입

최근 클라이언트 측 유효성 검사에 네이티브 HTML 기능을 적극 활용하는 추세입니다. 이는 서버 요청 없이 빠르고 안정적인 오류 확인을 가능하게 합니다. 특히 `pattern` 속성은 정규 표현식을 사용하여 입력 값의 유효성을 자동으로 검사하며, `title` 속성을 함께 사용하면 제출 시 브라우저가 해당 텍스트를 오류 메시지의 일부로 표시합니다. 본 글에서는 이러한 네이티브 HTML 유효성 검사를 더욱 사용자 친화적으로 개선하기 위해, 사용자가 입력하는 동안 실시간으로 사용자 정의 메시지를 표시하는 방법을 CSS와 Stimulus 컨트롤러를 활용하여 제시합니다.

본 개선 방안은 단일 CSS 클래스와 간단한 Stimulus 컨트롤러를 활용하여 구현됩니다.

메시지 표시 기본 원리

  • CSS 클래스 추가: 유효성 검사가 필요한 input 요소를 포함하는 컨테이너에 input-with-validation과 같은 CSS 클래스를 추가합니다.
  • :has()::after 활용: input:invalid 상태일 때 컨테이너 아래에 메시지를 표시하기 위해 다음과 같은 CSS 규칙을 사용합니다. css .input-with-validation:has(input:invalid)::after { content: "Please enter a valid value"; display: block; color: red; font-size: 0.8rem; margin-top: 0.25rem; } 이 방법을 통해 입력이 유효하지 않을 때 일반적인 오류 메시지가 즉시 나타나게 됩니다.

사용자 정의 메시지 표시

  • data-error-message 속성 활용: ::after 의사 요소의 content 속성을 attr(data-error-message)로 설정하여 동적으로 메시지를 가져옵니다. css .input-with-validation:has(input:invalid)::after { content: attr(data-error-message); /* ... 기타 스타일 */ }
  • Stimulus 컨트롤러 연동: inputtitle 속성 값을 data-error-message에 할당하고, 필요한 CSS 클래스를 추가하기 위해 Stimulus 컨트롤러를 사용합니다. ```html

    javascript // controllers/input_with_validation_controller.js export default class extends Controller { static targets = [“input”] connect() { this.element.classList.add(“input-with-validation”) this.element.dataset.errorMessage = this.inputTarget.title } } ``` connect() 메서드에서 컨트롤러 요소에 input-with-validation 클래스를 추가하고, input 타겟의 title 속성 값을 컨테이너 요소의 data-error-message 속성에 할당합니다.

재사용성

이 제네릭 컨트롤러는 email, url 등 다양한 유형의 input 요소에도 재사용 가능합니다. inputtitle 속성과 네이티브 HTML 유효성 검사 규칙을 가지고 있다면, 동일한 방식으로 사용자 정의 메시지를 표시할 수 있습니다.

결론

본 접근 방식은 최소한의 CSS와 간결한 Stimulus 컨트롤러를 활용하여 네이티브 HTML 유효성 검사를 더욱 유용하고 사용자 친화적으로 변모시킵니다. 사용자가 폼을 제출하기 전에 입력 값을 수정할 수 있도록 실시간으로 사용자 정의 오류 메시지를 표시함으로써 사용자 경험을 크게 향상시킬 수 있습니다. 또한, 이 솔루션은 다양한 입력 유형에 걸쳐 완벽하게 재사용 가능하여 개발 효율성을 높이는 장점이 있습니다. 이는 클라이언트 측 유효성 검사 구현에 있어 효율성과 유연성을 동시에 제공하는 모범 사례로 평가됩니다.

댓글 0

댓글 작성

0/1000
정중하고 건설적인 댓글을 작성해 주세요.

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!