gpt4 book ai didi

javascript - 如何使用 Vanilla JS 在事件监听器中禁用 preventDefault

转载 作者:行者123 更新时间:2023-11-29 16:01:42 25 4
gpt4 key购买 nike

我对 JS 还是很陌生,希望能够删除停止表单提交的事件监听器。我已经尝试了多种不同的解决方案来在 JS 而不是 jquery 中完成它,但没有运气。该表格目前未提交,但如果我的“如果”条件为假,我无法将其撤消。

    
var element = document.querySelector('form');
element.addEventListener('submit', event => {
event.preventDefault();
});

function validateForm() {

var error = "";

if (document.getElementById("name").value == "") {

error += "<p>Name field required</p>"


}

if (document.getElementById("email").value == "") {

error += "<p>Email field required</p>"

}

if (document.getElementById("subject").value == "") {

error += "<p>Subject field required</p>"

}

if (document.getElementById("question").value == "") {

error += "<p>Question field required</p>"

}


if (error != "") {

document.getElementById("errorDiv").style.display = "block";

document.getElementById("errorDiv").innerHTML = "<b>There wer error(s) in the form, please complete all required fields</b>" + error;


} else {

var element = document.querySelector('form');
element.removeEventListener('submit', event => {
event.preventDefault();
});
}

}
    <div id="errorDiv"></div>
<form id="contact_form" onsubmit="validateForm();">
<button type="submit"></button>

如果有人可以提供帮助,在此先感谢

最佳答案

我认为您应该从 validateForm() 函数返回 true/false 以阻止/提交表单。

1. 您必须从 html 标记中的函数返回值:

<form id="contact_form" onsubmit="return validateForm();">

2. 根据验证从您的 validateForm() 返回 true/false

function validateForm() {
var error = "";
................
................
................
if (error != "") {
document.getElementById("errorDiv").style.display = "block";
document.getElementById("errorDiv").innerHTML = "<b>There wer error(s) in the form, please complete all required fields</b>" + error;
return false;

} else {
return true;
}
}
  1. 不需要阻止表单提交,因此删除此代码。

    var element = document.querySelector('form');
    element.addEventListener('submit', event => {
    event.preventDefault();
    });

关于javascript - 如何使用 Vanilla JS 在事件监听器中禁用 preventDefault,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52129971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com