导航
电话
咨询
地图
顶部
javascript 表单提交事件中,若未阻止默认行为,页面会自动刷新导致 `console.log` 无法在控制台显示;同时需确保事件监听器绑定到 `
在前端开发中,尤其是初学者使用原生 JavaScript 处理表单时,常遇到「点击按钮后控制台无日志输出」的问题。这并非代码语法错误,而是由两个关键机制共同导致的:HTML 表单的默认提交行为 和 DOM 元素选择器的误用。
id="Formulario" 绑定在 上,而非 元素 原 HTML 中: 而 JavaScript 中却尝试获取该 ID 并监听 submit 事件:const cadForm = document.getElementById('Formulario'); if (cadForm) { cadForm.addEventListener("submit", ...); // ❌ div 不会触发 submit 事件 }✅ 正确做法是将 id="Formulario" 移至 标签上: 未调用 event.preventDefault() 默认提交会触发行内 action="#" 的跳转(即页面重载)。一旦页面刷新,所有尚未执行完的 JS(包括 console.log)都会被中断,控制台自然看不到输出。 ✅ 必须在事件处理函数中显式阻止默认行为:cadForm.addEventListener("submit", (e) => { e.preventDefault(); // ✅ 关键:阻止页面刷新 console.log("Success"); // ✅ 现在能正常输出 }); ✅ 完整修复示例 Submit // 修复后的 JavaScript(含防刷新 + 可选 Swal 提示) const cadForm = document.getElementById('Formulario'); if (cadForm) { cadForm.addEventListener("submit", (e) => { e.preventDefault(); // ? 必须!阻止页面重载 console.log("✅ Form submitted successfully!"); // ✅ 控制台可见 // 示例:调用 SweetAlert2 弹窗(需确保库已正确加载) // Swal.fire({ // icon: 'success', // title: 'Cadastro realizado!', // text: 'Seus dados foram enviados com sucesso.' // }); }); }⚠️ 注意事项与最佳实践 避免命名冲突:示例中定义了名为 alert() 的函数,但 alert 是浏览器全局函数名,覆盖它可能导致意外行为。建议改用语义化名称,如 showRegistrationError()。 脚本加载时机:确保 JS 代码在 DOM 加载完成后执行。推荐将
而 JavaScript 中却尝试获取该 ID 并监听 submit 事件:
const cadForm = document.getElementById('Formulario'); if (cadForm) { cadForm.addEventListener("submit", ...); // ❌ div 不会触发 submit 事件 }
✅ 正确做法是将 id="Formulario" 移至
未调用 event.preventDefault()
cadForm.addEventListener("submit", (e) => { e.preventDefault(); // ✅ 关键:阻止页面刷新 console.log("Success"); // ✅ 现在能正常输出 });
// 修复后的 JavaScript(含防刷新 + 可选 Swal 提示) const cadForm = document.getElementById('Formulario'); if (cadForm) { cadForm.addEventListener("submit", (e) => { e.preventDefault(); // ? 必须!阻止页面重载 console.log("✅ Form submitted successfully!"); // ✅ 控制台可见 // 示例:调用 SweetAlert2 弹窗(需确保库已正确加载) // Swal.fire({ // icon: 'success', // title: 'Cadastro realizado!', // text: 'Seus dados foram enviados com sucesso.' // }); }); }
# html # js # 前端 # 前端开发 # cad # javascript # java # 浏览器 # 邮箱 # 表单提交 # ajax
相关栏目: 【 行业资讯 】 【 网络运营 】 【 GEO优化 】 【 营销推广 】 【 SEO优化 】 【 技术教程 】 【 代码知识 】 【 AI推广 】
相关推荐: 如何使用Golang log设置日志输出格式_Golang log日志格式示例 Windows电脑如何进入安全模式?(多种按键方法) Win10如何卸载微软拼音输入法 Win10只保留一个输入法【教程】 Windows如何拦截2345弹窗广告_Windows拦截2345弹窗方法【步骤】 Windows10如何更改鼠标灵敏度_Win10鼠标属性指针选项调节 如何在 Pandas 中按元素交集合并两列字符串 如何使用Golang sync.Map实现并发安全map_避免锁竞争 如何正确访问 Laravel 模型或对象的属性而非调用不存在的方法 Win11系统占用空间大怎么办 Win11深度瘦身清理指南【优化】 Windows10怎么用“讲述人”读屏辅助 Windows10轻松使用开启讲述人朗读屏幕文字帮助视障用户【教程】 c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】 Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】 c# F# 的 MailboxProcessor 和 C# 的 Actor 模型 如何在 Go 中判断变量是否为函数类型 Win11资源管理器卡顿怎么办 Win11文件资源管理器重启技巧【优化】 c++中的std::conjunction和std::disjunction是什么_c++模板元编程逻辑运算【C++17】 php8.4如何调用com组件_php8.4windows下com操作指南【教程】 Go 语言标准库为何不提供泛型 Contains 方法:设计哲学与类型系统约束 获取 PHP 文件最后修改时间的正确方法 Django 测试数据库表缺失与字段未创建问题的完整解决方案 PythonGIL机制理解_多线程限制解析【教程】 Win11如何开启系统更新 Win11开启系统更新方法【步骤】 Mac如何查看电池健康百分比_Mac系统信息电源检测 c++如何利用doxygen生成开发文档_c++ 代码注释规范与HTML文档导出【案例】 Python对象比较排序规则_集合使用说明【指导】 Python装饰器复用技巧_通用能力解析【教程】 Go 语言标准库为何不提供泛型切片的 Contains 方法? 如何在 Go 中创建包含 map 的 slice(嵌套数据结构) C++如何解析JSON数据?(nlohmann/json库示例) LINUX下如何配置VLAN虚拟局域网_在LINUX交换机与服务器上的实现 Win11怎么关闭防火墙通知_屏蔽Win11安全中心安全警告弹窗【技巧】 Python日志系统设计与实现_高可观测性架构实战 Mac版Final Cut Pro入门_Mac视频剪辑基础操作【教程】 c++中的CRTP是什么 c++奇异递归模板模式【进阶】 如何高效删除 NumPy 二维数组中所有元素相同的列 c++ namespace命名空间用法_c++避免命名冲突 php订单日志怎么记录物流_php记录订单物流变更日志指南【指南】 Windows音频驱动无声音原因解析_声卡驱动错误修复步骤 Python解释执行模型_字节码流程说明【指导】 Python配置文件操作教程_JSONINIYAML解析与应用实战 如何使用Golang进行HTTP服务性能测试_测量吞吐量和延迟 php本地部署后session无法保存_session存储路径与权限设置技巧【技巧】 如何在 Go 中正确测试带 Cookie 的 HTTP 请求 Win11怎样安装微信开发者工具_Win11安装开发者工具教程【步骤】 Python 中将 ISO 8601 时间戳转换为日期并计算日期差值的完整教程 Win11如何设置开机问候语 Win11修改登录界面提示【技巧】 C++中的Pimpl idiom是什么,有什么好处?(隐藏实现) Python文件操作优化_大文件与流处理解析【教程】 VSC怎样在VSC中调试PHPAPI_接口调试技巧【详解】 如何在 Go 同包不同文件中正确引用结构体
赣ICP备2024031479号