我有这样的表格:
<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;
}
}
答案 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;
}
}