如何使用 Vanilla JS 在事件侦听器中禁用 preventDefault
How to disable preventDefault in an event listener using Vanilla JS
我对 JS 还是很陌生,希望能够删除停止表单提交的事件侦听器。我尝试了多种不同的解决方案来用 JS 而不是 jquery 来做,但没有成功。该表格目前未提交,但如果我的 'if' 条件为假,我无法将其撤消。
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>
如果有人能提供帮助,在此先感谢。
我认为您应该 return true/false
从 validateForm()
函数到 prevent/submit 表单。
1. 您必须 return 来自 html 标记中函数的值:
<form id="contact_form" onsubmit="return validateForm();">
2. Return true/false
来自您的 validateForm()
基于验证。
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;
}
}
不需要阻止表单提交因此删除此代码。
var element = document.querySelector('form');
element.addEventListener('submit', event => {
event.preventDefault();
});
我对 JS 还是很陌生,希望能够删除停止表单提交的事件侦听器。我尝试了多种不同的解决方案来用 JS 而不是 jquery 来做,但没有成功。该表格目前未提交,但如果我的 'if' 条件为假,我无法将其撤消。
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>
如果有人能提供帮助,在此先感谢。
我认为您应该 return true/false
从 validateForm()
函数到 prevent/submit 表单。
1. 您必须 return 来自 html 标记中函数的值:
<form id="contact_form" onsubmit="return validateForm();">
2. Return true/false
来自您的 validateForm()
基于验证。
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;
}
}
不需要阻止表单提交因此删除此代码。
var element = document.querySelector('form'); element.addEventListener('submit', event => { event.preventDefault(); });