javascript - Javascript 中的 preventDefault 停止发送电子邮件
问题描述
我想寻求一点帮助。我在 jQuery 中看到了一些东西,但我需要 Javascript。为了我们的目的,我创建了简单的表格。使用 preventDefault 我没有收到任何邮件,当我删除 preventDefault 时,我收到的邮件包含表单中的所有数据,但没有验证过程,但验证功能仍然存在。谢谢你的帮助。
const form = document.querySelector("form");
const nameInput = document.querySelector("input[name='username']");
const emailInput = document.querySelector("input[name='email']");
const subjectInput = document.querySelector("input[name='subject']");
const messageInput = document.querySelector("textarea[name='message']");
form.addEventListener("submit", (e) => {
checkInputs();
e.preventDefault();
});
const checkInputs = () => {
if(!nameInput.value) {
showError(nameInput, "Field cannot be blank!");
}
}
const showError = (input, message) => {
const formControl = input.parentElement;
const errorMsg = formControl.querySelector("p");
formControl.classList.add("error");
errorMsg.innerText = message;
}
解决方案
只有在没有错误的情况下,您才能以编程方式提交表单。
form.addEventListener("submit", (e) => {
e.preventDefault();
const hasError = checkInputs();
if (!hasError) {
form.submit();
}
});
const checkInputs = () => {
let hasError = false;
if(!nameInput.value) {
hasError = true;
showError(nameInput, "Field cannot be blank!");
}
return hasError;
}
推荐阅读
- python - 简化python 3.6中的if语句
- cassandra - Cassandra 计数器表的原子更新和选择
- c++ - 调用基函数时模板参数推导失败
- ruby-on-rails - 从ruby中的父类调用派生类实例方法
- ruby-on-rails - 访问液滴轨道内的当前用户 5
- python-3.x - 获取 ABCMeta 的所有已注册子类
- c# - 如何允许用户从列表框中复制项目并粘贴到 Windows 窗体之外
- reactjs - 使用 jest 进行多环境测试
- async-await - 从任务列表中捕获异常
- java - If Else - Else 在 Java Netbeans 中无法正常工作