由于某种原因,未执行函数onsubmit

时间:2019-12-06 12:53:44

标签: javascript

我有这样的表格:

<form action="/register" name="formz" id="formz" novalidate onsubmit="return valForm()" method="POST">

我有一个功能:

function valForm() {
  document.getElementById("formz").addEventListener("submit", function(event) {
    if (checkuser() === true || checkpass() === true) {
      return true;
    }
    else {
      event.preventDefault();
      event.stopPropagation();
      return false;
    }
  });
}

从我在Chrome浏览器中使用调试器看到的,此功能甚至都没有执行。 为什么会有任何帮助?

JIC脚本文件的其余部分(其他两个功能):

function checkuser() {
  $.getJSON("/check?username=" + document.forms["formz"]["username"].value, function(data) {
    let x = document.forms["formz"]["username"].value;
    let vard = data.available;

    if (vard == true && x) {
      document.getElementById("username").classList.remove('is-invalid');
      document.getElementById("username").classList.add('is-valid');
      return true;
    }
    else {
      document.getElementById("username").classList.remove('is-valid');
      document.getElementById("username").classList.add('is-invalid');
      return false;
    }
  });
}

function checkpass() {
    let x = document.forms["formz"]["password"].value;
    if (!x) {
      document.getElementById("password").classList.remove('is-valid');
      document.getElementById("password").classList.add('is-invalid');
      return true;
    }
    else {
      document.getElementById("password").classList.remove('is-invalid');
      document.getElementById("password").classList.add('is-valid');
      return false;
    }
  }

2 个答案:

答案 0 :(得分:1)

您这里真正的问题似乎是提交时从未执行任何操作。为什么?因为您用作onsubmit的函数只是在同一事件上将事件侦听器添加到表单中。但是,由于该事件已经发生,因此您的实际代码都不会执行。

要解决此问题,您有两个选择:

  • 抛弃addEventListener,然后在valForm内运行代码。
  • 抛弃onsubmit并在页面加载时调用addEventListener,而不是等待另一个函数调用。

答案 1 :(得分:1)

您应该删除退货

<form action="/register" name="formz" id="formz" novalidate onsubmit="valForm()" method="POST">

并删除添加的“ onsubmit”事件侦听器,因为您已经在HTML上添加了表单。

正确的valForm函数:

function valForm() {
  if (checkuser() === true || checkpass() === true) {
      return true;
    }
    else {
      event.preventDefault();
      event.stopPropagation();
      return false;
    }
}