부트스트랩(Bootstrap)은 폼 입력 요소의 상태를 시각적으로 표현할 수 있는 유효성 검사(validation) 스타일을 기본으로 제공합니다. 오류(error), 경고(warning), 성공(success) 세 가지 상태를 지원하며, 사용 방법도 매우 간단합니다. 부모 요소인 .form-group에 적절한 클래스만 추가하면 됩니다.
유효성 검사 상태 클래스 종류
부트스트랩에서 제공하는 유효성 검사 클래스는 다음과 같습니다.
.has-success— 입력이 정상적으로 완료되었을 때 초록색으로 표시됩니다..has-warning— 주의가 필요한 경고 상태일 때 노란색으로 표시됩니다..has-error— 입력값에 오류가 있을 때 빨간색으로 표시됩니다.
이 클래스들은 라벨(label), 입력 필드의 테두리, 텍스트 색상에 자동으로 적용되어 사용자가 폼의 상태를 직관적으로 인식할 수 있도록 도와줍니다.
예제 코드
아래 예제는 포커스된 입력 필드, 비활성화(disabled)된 입력 요소들과 함께 .has-success, .has-warning, .has-error 클래스를 실제로 적용한 전체 코드입니다. 코드를 복사해 실행하면 각 유효성 검사 상태가 어떻게 화면에 나타나는지 바로 확인할 수 있습니다.
<!DOCTYPE html> <html> <head> <title>Bootstrap Example</title> <link href = "/bootstrap/css/bootstrap.min.css" rel = "stylesheet"> <script src = "/scripts/jquery.min.js"></script> <script src = "/bootstrap/js/bootstrap.min.js"></script> </head> <body> <form class = "form-horizontal" role = "form"> <div class = "form-group"> <label class = "col-sm-2 control-label">Focused</label> <div class = "col-sm-10"> <input class = "form-control" id = "focusedInput" type = "text" value = "This is focused..."> </div> </div> <div class = "form-group"> <label for = "inputPassword" class = "col-sm-2 control-label">Disabled</label> <div class = "col-sm-10"> <input class = "form-control" id = "disabledInput" type = "text" placeholder = "Disabled input here..." disabled> </div> </div> <fieldset disabled> <div class = "form-group"> <label for = "disabledTextInput" class = "col-sm-2 control-label"> Disabled input (Fieldset disabled) </label> <div class = "col-sm-10"> <input type = "text" id = "disabledTextInput" class = "form-control" placeholder = "Disabled input"> </div> </div> <div class = "form-group"> <label for = "disabledSelect" class = "col-sm-2 control-label"> Disabled select menu (Fieldset disabled) </label> <div class = "col-sm-10"> <select id = "disabledSelect" class = "form-control"> <option>Disabled select</option> </select> </div> </div> </fieldset> <div class = "form-group has-success"> <label class = "col-sm-2 control-label" for = "inputSuccess"> Input with success </label> <div class = "col-sm-10"> <input type = "text" class = "form-control" id = "inputSuccess"> </div> </div> <div class = "form-group has-warning"> <label class = "col-sm-2 control-label" for = "inputWarning"> Input with warning </label> <div class = "col-sm-10"> <input type = "text" class = "form-control" id = "inputWarning"> </div> </div> <div class = "form-group has-error"> <label class = "col-sm-2 control-label" for = "inputError"> Input with error </label> <div class = "col-sm-10"> <input type = "text" class = "form-control" id = "inputError"> </div> </div> </form> </body> </html>
코드 설명
예제 코드의 핵심 부분을 살펴보면 다음과 같습니다.
1. 성공 상태 (.has-success)
<div class="form-group has-success">처럼 form-group에 has-success 클래스를 추가하면 해당 그룹 안의 라벨과 입력 필드가 초록색으로 강조됩니다. 이메일 형식이 올바르거나 아이디 중복 확인이 통과된 경우 등에 활용하기 좋습니다.
2. 경고 상태 (.has-warning)
has-warning 클래스는 노란색 계열로 표시되며, 비밀번호가 너무 짧거나 입력값이 권장 조건을 충족하지 못하는 경우처럼 '주의'가 필요한 상황을 알릴 때 사용합니다.
3. 오류 상태 (.has-error)
has-error 클래스는 빨간색으로 표시됩니다. 필수 항목이 비어 있거나 잘못된 값을 입력했을 때 사용자에게 오류를 명확하게 전달할 수 있습니다.
4. 참고: 피드백 아이콘 추가하기
여기에 has-feedback 클래스와 글리피콘(Glyphicon)을 함께 사용하면 입력 필드 우측에 체크 표시, 느낌표 등의 아이콘을 추가하여 유효성 검사 상태를 더욱 직관적으로 표현할 수 있습니다.
마무리
부트스트랩의 유효성 검사 상태 클래스를 활용하면 별도의 CSS 작성 없이도 일관된 디자인의 폼 검증 UI를 손쉽게 구축할 수 있습니다. 위 예제 코드를 응용해 회원가입 폼, 로그인 폼 등 다양한 상황에 적용해 보시기 바랍니다.