验证输入字段不为空

Validating input fields not empty

我编写了这段代码来验证是否所有输入字段都已填写。如果不提交是不允许的,但是当它是正确的时候我必须点击提交按钮两次,第一次它验证并添加 eventListener 第二次它运行因为它有事件监听器。如何修改代码,以便我只需单击一次?

function validaInput() {
  const inputs = document.querySelectorAll(".input-field");
  let validez;
  inputs.forEach(function(input) {
    if (input.value !== "") {
      validez = true;
    } else {
      validez = false;
    }
  });

  if (validez) {
    submitBtn.addEventListener("click", calculaPromedio);
    submitBtn.addEventListener("click", addMateria);
  } else {
    alert("No ha llenado todos los campos.");
  }
}

调用相关函数即可,无需添加监听器。 (此外,否则每次单击按钮时都会添加新的重复侦听器。)

  if (validez) {
    calculaPromedio();
    addMateria();
  } else {
    alert("No ha llenado todos los campos.");
  }

如果您在这些函数中使用 this,则需要例如calculaPromedio.call(this).