首页 > 解决方案 > 如何在表单验证中添加 CSS 类

问题描述

我有一个简单的表单,其中一些输入标有required,如何添加类invalidvalid在有效或无效的特定输入中?

只有 1 个输入接收invalid类。

const $input = document.querySelector("input")
const $form = document.querySelector("#form")
const $button = document.querySelector("#button")


$button.addEventListener('click', () => validate())

const validate = () => {
  if (!$form.checkValidity()) {
    console.log('invalid')
    $input.classList.add('invalid')
  } else {
    console.log('valid')
    $input.classList.add('valid')
  }
}
input.invalid {
  background: red;
}

input.valid {
  background: green;
}
<form id="form">
  <input class="input" type="text" placeholder="Name" name="nome" required>
  <input class="input" type="number" placeholder="Number" name="number">
  <input class="input" type="number" placeholder="Size" name="size" required>
  <input class="input" type="checkbox" name="blue">
  <input class="input" type="checkbox" name="red">
</form>
<button id="button">Submit</button>

标签: javascriptformsinput

解决方案


使用 querySelectorAll

const $input = document.querySelectorAll("input")
const $form = document.querySelector("#form")
const $button = document.querySelector("#button")


$button.addEventListener('click', () => validate())

const validate = () => {
  if (!$form.checkValidity()) {
    console.log('invalid')
    $input.forEach(input => input.classList.add('invalid'));
  } else {
    console.log('valid')
    $input.forEach(input => input.classList.add('valid''));
  }
}
input.invalid {
  background: red;
}

input.valid {
  background: green;
}
<form id="form">
  <input class="input" type="text" placeholder="Name" name="nome" required>
  <input class="input" type="number" placeholder="Number" name="number">
  <input class="input" type="number" placeholder="Size" name="size" required>
  <input class="input" type="checkbox" name="blue">
  <input class="input" type="checkbox" name="red">
</form>
<button id="button">Submit</button>


推荐阅读