📅  最后修改于: 2023-12-03 15:36:34.850000             🧑  作者: Mango
在 Web 应用程序中,用户可能会多次提交一个表单,这可能会导致数据重复或其他不良结果。在这种情况下,禁用多个表单提交就变得特别重要。这可以通过 Vanilla JavaScript 来完成。
以下是禁用多个表单提交的基本流程:
preventDefault()
方法。下面是主要的 JavaScript 代码:
const form = document.querySelector('#myForm');
form.addEventListener('submit', (event) => {
event.preventDefault(); // 禁止表单提交
const submitBtn = form.querySelector('input[type="submit"]');
submitBtn.disabled = true; // 禁用提交按钮
submitBtn.value = '请稍候...'; // 更改提交按钮文本
// 发送表单数据
fetch(form.action, {
method: form.method,
body: new FormData(form)
})
.then((response) => {
// 在此添加表单提交成功后需要的操作
console.log('表单已成功提交!');
})
.catch((error) => {
// 在此添加表单提交失败后需要的操作
console.error('表单提交失败!', error);
})
.finally(() => {
submitBtn.disabled = false; // 启用提交按钮
submitBtn.value = '提交表单'; // 恢复提交按钮文本
});
});
querySelector()
方法获取表单元素,并通过 addEventListener()
方法添加提交事件监听器。const form = document.querySelector('#myForm');
form.addEventListener('submit', (event) => {
// 事件处理程序
});
preventDefault()
方法阻止表单默认提交行为,禁止多个提交。event.preventDefault();
const submitBtn = form.querySelector('input[type="submit"]');
submitBtn.disabled = true;
submitBtn.value = '请稍候...';
FormData
对象传递给 fetch()
方法,并处理提交成功或失败的情况。fetch(form.action, {
method: form.method,
body: new FormData(form)
})
.then((response) => {
// 处理提交成功的情况
})
.catch((error) => {
// 处理提交失败的情况
})
.finally(() => {
// 此部分代码将在提交成功或失败之后执行,恢复提交按钮状态。
});
submitBtn.disabled = false;
submitBtn.value = '提交表单';
使用 Vanilla JavaScript 禁用多个表单提交非常简单。通过添加 submit 事件监听器并在事件处理程序中禁用提交按钮,可以防止数据重复提交。可适用于任何具有表单的网站或 Web 应用程序。