HTML 패널
<h2>회원가입 폼</h2>
<form id="signupForm">
<div>
<label>아이디:</label>
<input type="text" id="username" required>
<span id="usernameError" class="error"></span>
</div>
<div>
<label>비밀번호:</label>
<input type="password" id="password" required>
<span id="passwordError" class="error"></span>
</div>
<div>
<label>비밀번호 확인:</label>
<input type="password" id="passwordConfirm" required>
<span id="confirmError" class="error"></span>
</div>
<div>
<label>이메일:</label>
<input type="email" id="email" required>
<span id="emailError" class="error"></span>
</div>
<button type="submit">가입하기</button>
</form>
<div id="result"></div>
JavaScript 패널
document.getElementById('signupForm').addEventListener('submit', function(e) {
e.preventDefault(); // 폼 제출 방지
// 에러 메시지 초기화
document.querySelectorAll('.error').forEach(e => e.textContent = '');
let isValid = true;
// 아이디 검증 (4자 이상)
let username = document.getElementById('username').value;
if (username.length < 4) {
document.getElementById('usernameError').textContent = '아이디는 4자 이상이어야 합니다';
isValid = false;
}
// 비밀번호 검증 (8자 이상)
let password = document.getElementById('password').value;
if (password.length < 8) {
document.getElementById('passwordError').textContent = '비밀번호는 8자 이상이어야 합니다';
isValid = false;
}
// 비밀번호 확인
let passwordConfirm = document.getElementById('passwordConfirm').value;
if (password !== passwordConfirm) {
document.getElementById('confirmError').textContent = '비밀번호가 일치하지 않습니다';
isValid = false;
}
// 이메일 검증
let email = document.getElementById('email').value;
if (!email.includes('@')) {
document.getElementById('emailError').textContent = '올바른 이메일 형식이 아닙니다';
isValid = false;
}
// 모든 검증 통과
if (isValid) {
document.getElementById('result').textContent = '✅ 회원가입 성공!';
document.getElementById('result').style.color = 'green';
}
});
CSS 패널
body {
font-family: Arial, sans-serif;
max-width: 400px;
margin: 50px auto;
padding: 20px;
}
form div {
margin-bottom: 15px;
}
label {
display: inline-block;
width: 120px;
font-weight: bold;
}
input {
padding: 8px;
width: 200px;
border: 1px solid #ddd;
}
input:focus {
border-color: #3498db;
outline: none;
}
.error {
display: block;
color: red;
font-size: 12px;
margin-left: 120px;
margin-top: 5px;
}
button {
margin-left: 120px;
padding: 10px 30px;
background-color: #2ecc71;
color: white;
border: none;
cursor: pointer;
font-size: 16px;
}
button:hover {
background-color: #27ae60;
}
#result {
margin-top: 20px;
font-size: 18px;
font-weight: bold;
text-align: center;
}
Comments
0 B
|0 👍
/0 👎
0 B
|0 👍
/0 👎