사용자 입력값 검증
H:Dev+에서는 입력 폼에서 사용자의 데이터를 안전하고 일관되게 처리하기 위해 입력값 검증(Validation) 기능을 제공합니다.
입력 필드에 검증 속성을 정의하고, 유효성 조건에 따라 실시간 또는 제출 시 검사를 수행할 수 있습니다.
입력값 검증 흐름
다음 단계를 따라 입력값 검증을 구성할 수 있습니다:
- 검증할 데이터에 대한 Validation 패턴 확인
- data-validation 속성으로 검증 패턴 설정
- data-validation-type 속성으로 실시간 치환 여부 설정 (선택적)
- Checkbox의 경우 data-validation-limit으로 선택 수 제한 설정
Validation 패턴
패턴 명 | Value |
---|---|
phone-auto-hyphen | '-'하이픈이 포함된 전화번호 형식Replace 사용 가능 |
phone | 숫자로된 전화번호 형식Replace 사용 가능 |
phone-compact | 지역번호 등의 앞번호를 제외한 0000-0000 형식의 전화번호Replace 사용 가능 |
이메일Replace 사용 가능 | |
domain | http 또는 https를 포함한 도메인 |
password-8-32 | 숫자, 영문, 특수문자(?=.*[~!@#$%^*()+-=[]{};:?.,_)형식의 8-32자 형식Replace 사용 가능 |
password-4-8 | 숫자, 영문, 특수문자(?=.*[~!@#$%^*()+-=[]{};:?.,_)형식의 4-8자 형식Replace 사용 가능 |
number | 숫자Replace 사용 가능 |
number-alphabet | 숫자 + 알파벳Replace 사용 가능 |
number-alphabet-underscore | 숫자 + 알파벳 + 언더바('_')Replace 사용 가능 |
not-empty | 입력 필수 |
ip-v4 | ip v4 형식(000.000.000.000)의 IP addressReplace 사용 가능 |
check-limit | 'data-validation-limit'속성을 통해 설정된 Checkbox의 최소, 최대 선택 수 검증 |
radio-check | Radio 버튼의 선택여부 검증 |
HTML attributes
Tag : <form>
Name | Value | Description |
---|---|---|
data-validation-alert | yes 또는 미정의 | 입력 값 검증 오류시 alert 으로 표시 |
Tag : <input>
Name | Value | Description |
---|---|---|
data-validation | Validation 패턴 | 상기 Validation 패턴 색션 참조 |
data-validation-type | replace 또는 미정의 | Replace가 가능한 패턴일 경우 입력 값을 해당 패턴 형식으로 replace |
data-invalid-message | String | 입력값 검증에 실패시 표시할 메세지 |
Tag : <div> (Checkbox 그룹 - 부모요소에 적용)
Name | Value | Description |
---|---|---|
data-validation | check-limit | 선택 수 검증 패턴 |
data-validation-limit | 1-3 | '최소-최대수'형식의 최소 및 최대 선택 가능 개수 |
Tag : div(Radio 버튼의 parent tag)
Name | Value | Description |
---|---|---|
data-validation | radio-check | Radio 버튼 선택 필수 |
HTML
<form id="frm_validation">
<!-- phone-auto-hyphen : '-'하이픈이 포함된 전화번호 형식 -->
<div class="mb-3">
<label class="form-label">phone-auto-hyphen</label>
<input type="text" class="form-control" data-validation="phone-auto-hyphen" data-validation-type="replace" placeholder="'-'하이픈이 포함된 전화번호 형식"/>
<small class="invalid-feedback">유효한 값을 입력하세요</small>
<small class="valid-feedback">OK</small>
</div>
<!-- phone-compact : 지역번호 등의 앞번호를 제외한 0000-0000 형식의 전화번호 -->
<div class="mb-3">
<label class="form-label">phone-compact</label>
<input type="text" class="form-control" data-validation="phone-compact" data-validation-type="replace" placeholder="숫자로된 전화번호 형식"/>
<small class="invalid-feedback">유효한 값을 입력하세요</small>
<small class="valid-feedback">OK</small>
</div>
<!-- email : 이메일 -->
<div class="mb-3">
<label class="form-label">email</label>
<input type="text" class="form-control" data-validation="email" data-validation-type="replace" placeholder="이메일"/>
<small class="invalid-feedback">유효한 값을 입력하세요</small>
<small class="valid-feedback">OK</small>
</div>
<!-- check-limit : 'data-validation-limit'속성을 통해 설정된 Checkbox의 최소, 최대 선택 수 검증 -->
<div class="mb-3">
<label class="form-label">check-limit</label>
<div class="form-control d-flex justify-content-start align-items-center" data-validation="check-limit" data-validation-limit="2-4">
<div class="form-check-inline d-flex justify-content-start align-items-center">
<input class="form-check-input" type="checkbox" value="" id="ck1">
<label class="form-check-label small" for="ck1">
Check 1
</label>
</div>
<div class="form-check-inline d-flex justify-content-start align-items-center">
<input class="form-check-input" type="checkbox" value="" id="ck2">
<label class="form-check-label small" for="ck2">
Check 2
</label>
</div>
<div class="form-check-inline d-flex justify-content-start align-items-center">
<input class="form-check-input" type="checkbox" value="" id="ck3">
<label class="form-check-label small" for="ck3">
Check 3
</label>
</div>
<div class="form-check-inline d-flex justify-content-start align-items-center">
<input class="form-check-input" type="checkbox" value="" id="ck4">
<label class="form-check-label small" for="ck4">
Check 4
</label>
</div>
<div class="form-check-inline d-flex justify-content-start align-items-center">
<input class="form-check-input" type="checkbox" value="" id="ck5">
<label class="form-check-label small" for="ck5">
Check 5
</label>
</div>
</div>
<small class="invalid-feedback">2-4개 까지 선택 가능 합니다.</small>
<small class="valid-feedback">OK</small>
</div>
</form>