document.addEventListener('DOMContentLoaded', function () { // 获取所有的表单 const forms = document.querySelectorAll('form'); forms.forEach(function (form) { // 检查是否包含 normal 属性,若有则跳过 if (form.hasAttribute('normal')) { return; // 跳过此表单 } // 移除之前可能绑定的事件监听器,确保不会重复绑定 form.removeEventListener('submit', handleFormSubmit); // 绑定新的事件监听器 form.addEventListener('submit', handleFormSubmit); }); function handleFormSubmit(event) { event.preventDefault(); // 阻止默认提交 const form = event.target; // 添加防止重复提交的标志 if (form.dataset.isSubmitting === 'true') { return; // 如果已经在提交,则直接返回,防止重复提交 } form.dataset.isSubmitting = 'true'; // 标记表单为正在提交 // 获取表单中的提交按钮 const submitButton = form.querySelector('button[type="submit"]'); // 给提交按钮设置禁用状态 if (submitButton) { submitButton.disabled = true; } // 给id为 rk-form-load 的元素添加 rk-a-show class const loader = document.getElementById('rk-form-load'); if (loader) { loader.classList.remove('rk-a-hidden'); loader.classList.add('rk-a-show'); } // 使用 FormData 对象获取表单数据 const formData = new FormData(form); // 使用 fetch 发起请求 fetch(form.action, { method: form.method, body: formData, }) .then(response => response.text()) // 获取纯文本响应 .then(data => { // 提交成功时的处理 rk.tip('Tip', data, 3); // 使用 rk.tip 输出提示 // 延迟移除加载的 rk-a-show 类并添加 rk-a-hidden 类 setTimeout(() => { if (loader) { loader.classList.remove('rk-a-show'); loader.classList.add('rk-a-hidden'); } // 恢复提交按钮的可点击状态 if (submitButton) { submitButton.disabled = false; } form.dataset.isSubmitting = 'false'; // 解除提交锁定 }, 500); // 延迟 0.5 秒 }) .catch(error => { // 处理错误情况 rk.tip('错误', '提交出错: ' + error.message, 3); // 使用 rk.tip 输出错误信息 // 延迟移除加载的 rk-a-show 类并添加 rk-a-hidden 类 setTimeout(() => { if (loader) { loader.classList.add('rk-a-hidden'); loader.classList.remove('rk-a-show'); } // 恢复提交按钮的可点击状态 if (submitButton) { submitButton.disabled = false; } form.dataset.isSubmitting = 'false'; // 解除提交锁定 }, 500); // 延迟 0.5 秒 }); } });