HTML 폼에서 사용자로부터 정보를 수집할 때, 필수 입력 필드에 데이터를 제공하도록 유도하고 싶을 때가 있습니다. 이를 위해 HTML5에서는 required 속성을 사용할 수 있습니다. 이 속성을 사용하면 브라우저가 자동으로 필드가 비어 있는지 확인하고 제출을 막아줍니다. 그러나 JavaScript를 사용하여 이러한 필드의 유효성을 더 세밀하게 체크하고 사용자 정의 로직을 추가할 수 있습니다.
필수 입력 필드 지정하기
우선 HTML 폼에서 필수 입력 필드를 지정하는 방법을 살펴봅시다. 아래는 이름과 이메일을 입력받는 폼의 예시입니다.
<form id="myForm">
<label for="name">이름:</label>
<input type="text" id="name" name="name" required>
<label for="email">이메일:</label>
<input type="email" id="email" name="email" required>
<input type="submit" value="제출">
</form>
위의 코드에서 required 속성은 필수 입력 필드를 정의합니다. 사용자가 이 필드를 빈 채로 제출하려고 할 때 브라우저는 자동으로 유효성 검사를 수행하고 제출을 막아줍니다.
JavaScript를 사용한 유효성 검사
HTML의 기본 유효성 검사만으로는 부족한 경우가 있습니다. JavaScript를 사용하여 더 세밀한 유효성 검사를 수행할 수 있습니다. 아래는 JavaScript 코드를 사용하여 유효성 검사에 실패한 필드를 동적으로 처리하는 방법을 보여줍니다.
<script>
const form = document.getElementById('myForm');
form.addEventListener('submit', function(event) {
// 필드 유효성 검사
if (!form.checkValidity()) {
// 필수 입력 필드 중 하나 이상이 비어있거나 유효하지 않을 경우
alert('모든 필수 입력 필드를 작성해주세요.');
// 유효성 검사 실패한 필드를 선택하고 강조 표시
const invalidFields = document.querySelectorAll('input:invalid');
invalidFields.forEach(field => {
field.style.border = '2px solid red';
});
event.preventDefault(); // 제출을 막음
}
});
</script>
위의 코드에서는 다음과 같은 작업을 수행합니다.
- form 요소를 JavaScript로 가져옵니다.
- form 요소에 submit 이벤트 리스너를 추가합니다. 이 이벤트는 폼이 제출될 때 실행됩니다.
- 이벤트 리스너 내에서 form.checkValidity() 메서드를 사용하여 필드의 유효성을 확인합니다. 이 메서드는 모든 필수 입력 필드가 유효하면 true를, 하나라도 유효하지 않으면 false를 반환합니다.
- 필드의 유효성 검사 결과에 따라 경고 메시지를 표시하고 event.preventDefault()를 사용하여 제출을 방지합니다.
CSS를 사용한 필드 강조 표시
또한 CSS를 사용하여 유효성 검사에 실패한 필드를 시각적으로 강조할 수 있습니다. 아래 코드는 input:invalid 선택자를 사용하여 유효성 검사 실패한 필드에 빨간 테두리를 추가합니다.
<style>
/* 유효성 검사 실패한 필드에 스타일을 추가하여 강조 표시 */
input:invalid {
border: 2px solid red;
}
</style>
결론
HTML 폼에서 required 속성을 사용하여 필수 입력 필드를 정의하고, JavaScript와 CSS를 활용하여 유효성 검사를 더 세밀하게 수행하고 필드를 강조 표시할 수 있습니다. 이를 통해 사용자로 하여금 필수 정보를 입력하도록 유도하고, 입력 오류를 방지할 수 있습니다.