Validate user input before login submission

HTML

<form id="login-form">
  <label>
    使用者名稱:
    <input type="text" id="username">
    <span class="error-message" id="username-error"></span>
  </label><br>

  <label >
    密碼:
    <input type="password" id="password">
    <span class="error-message" id="password-error"></span>
  </label><br>

  <label >
    Email信箱:
    <input type="email" id="email">
    <span class="error-message" id="email-error"></span>

  </label>

  <button type="submit">登入</button>

</form>

CSS

* {
  box-sizing: border-box;

}
body {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 500px;
}
.error-message {
  color: red;
  font-size: 0.8rem;
  display: none;
}

input.invalid {
  border: 1px solid red;
}

JavaScript

document.querySelector('#login-form').addEventListener('submit' , function(e) {
  e.preventDefault();
  const username = document.querySelector('#username');
  const password = document.querySelector('#password');
  const email = document.querySelector('#email');

  const usernameError = document.querySelector('#username-error');
  const passwordError = document.querySelector('#password-error');
  const emailError =document.querySelector('#email-error');

  let valid = true;
  if (username.value.trim() === '' || username.value.length > 40) {
    username.classList.add('invalid');
    usernameError.textContent = '請輸入使用者名稱(必須在40字以內)';
    usernameError.style.display = 'inline';
    valid = false;
  }else {
    username.classList.remove('invalid');
    usernameError.textContent = '';
    usernameError.style.display = 'none';
  }

  if (password.value.length < 8  || password.value.length > 100) {
    password.classList.add('invalid');
    passwordError.textContent = '密碼需要介於8~100字元';
    passwordError.style.display = 'inline';
    valid = false;
  }else {
    password.classList.remove('invalid');
    passwordError.textContent = '';
    passwordError.style.display = 'none';
  }

  if ( !email.value.includes('@')) {
    email.classList.add('invalid');
    emailError.textContent = '請輸入有效的email(必須包含@)';
    emailError.style.display = 'inline';
  } else {
    email.classList.remove('invalid');
    emailError.textContent = '';
    emailError.style.display = 'none';
  }

  if (valid) {
    alert('登入成功!');
  }
})