William_Riker

웹 보안 - 폼 검증 (Validation)

Oct 27th, 2025
1,796
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 3.30 KB | None | 0 0
  1. HTML 패널
  2.  
  3. <h2>회원가입 폼</h2>
  4.  
  5. <form id="signupForm">
  6.     <div>
  7.         <label>아이디:</label>
  8.         <input type="text" id="username" required>
  9.         <span id="usernameError" class="error"></span>
  10.     </div>
  11.    
  12.     <div>
  13.         <label>비밀번호:</label>
  14.         <input type="password" id="password" required>
  15.         <span id="passwordError" class="error"></span>
  16.     </div>
  17.    
  18.     <div>
  19.         <label>비밀번호 확인:</label>
  20.         <input type="password" id="passwordConfirm" required>
  21.         <span id="confirmError" class="error"></span>
  22.     </div>
  23.    
  24.     <div>
  25.         <label>이메일:</label>
  26.         <input type="email" id="email" required>
  27.         <span id="emailError" class="error"></span>
  28.     </div>
  29.    
  30.     <button type="submit">가입하기</button>
  31. </form>
  32.  
  33. <div id="result"></div>
  34.  
  35. JavaScript 패널
  36.  
  37. document.getElementById('signupForm').addEventListener('submit', function(e) {
  38.     e.preventDefault(); // 폼 제출 방지
  39.    
  40.     // 에러 메시지 초기화
  41.     document.querySelectorAll('.error').forEach(e => e.textContent = '');
  42.    
  43.     let isValid = true;
  44.    
  45.     // 아이디 검증 (4자 이상)
  46.     let username = document.getElementById('username').value;
  47.     if (username.length < 4) {
  48.        document.getElementById('usernameError').textContent = '아이디는 4자 이상이어야 합니다';
  49.        isValid = false;
  50.    }
  51.    
  52.    // 비밀번호 검증 (8자 이상)
  53.    let password = document.getElementById('password').value;
  54.    if (password.length < 8) {
  55.        document.getElementById('passwordError').textContent = '비밀번호는 8자 이상이어야 합니다';
  56.        isValid = false;
  57.    }
  58.    
  59.    // 비밀번호 확인
  60.    let passwordConfirm = document.getElementById('passwordConfirm').value;
  61.    if (password !== passwordConfirm) {
  62.        document.getElementById('confirmError').textContent = '비밀번호가 일치하지 않습니다';
  63.        isValid = false;
  64.    }
  65.    
  66.    // 이메일 검증
  67.    let email = document.getElementById('email').value;
  68.    if (!email.includes('@')) {
  69.        document.getElementById('emailError').textContent = '올바른 이메일 형식이 아닙니다';
  70.        isValid = false;
  71.    }
  72.    
  73.    // 모든 검증 통과
  74.    if (isValid) {
  75.        document.getElementById('result').textContent = '✅ 회원가입 성공!';
  76.        document.getElementById('result').style.color = 'green';
  77.    }
  78. });
  79.  
  80. CSS 패널
  81.  
  82. body {
  83.    font-family: Arial, sans-serif;
  84.    max-width: 400px;
  85.    margin: 50px auto;
  86.    padding: 20px;
  87. }
  88.  
  89. form div {
  90.    margin-bottom: 15px;
  91. }
  92.  
  93. label {
  94.    display: inline-block;
  95.    width: 120px;
  96.    font-weight: bold;
  97. }
  98.  
  99. input {
  100.    padding: 8px;
  101.    width: 200px;
  102.    border: 1px solid #ddd;
  103. }
  104.  
  105. input:focus {
  106.    border-color: #3498db;
  107.    outline: none;
  108. }
  109.  
  110. .error {
  111.    display: block;
  112.    color: red;
  113.    font-size: 12px;
  114.    margin-left: 120px;
  115.    margin-top: 5px;
  116. }
  117.  
  118. button {
  119.    margin-left: 120px;
  120.    padding: 10px 30px;
  121.    background-color: #2ecc71;
  122.    color: white;
  123.    border: none;
  124.    cursor: pointer;
  125.    font-size: 16px;
  126. }
  127.  
  128. button:hover {
  129.    background-color: #27ae60;
  130. }
  131.  
  132. #result {
  133.    margin-top: 20px;
  134.    font-size: 18px;
  135.    font-weight: bold;
  136.    text-align: center;
  137. }
Advertisement