新闻中心
解决J*aScript表单提交刷新与preventDefault()失效问题

引言:理解表单提交的默认行为
在Web开发中,HTML
在按钮的点击事件中调用 event.preventDefault() 如果出于某些特定原因,按钮必须保留在表单内部,且不能设置为 type="button"(例如,为了利用某些CSS选择器),你可以在其 click 事件监听器中显式调用 event.preventDefault() 来阻止其默认的提交行为。
let button = document.getElementById("darkToggle");
button.addEventListener("click", function (e) {
e.preventDefault(); // 阻止按钮的默认提交行为
// ... 切换暗模式的代码 ...
});误区二:submit 事件监听器的错误绑定位置
问题描述:submit 事件是HTML
当用户点击提交按钮时,虽然按钮的 click 事件会触发,但表单的 submit 事件也会同时触发。如果 preventDefault() 仅在提交按钮的 click 事件中被调用,或者在绑定到提交按钮的 onsubmit 属性中调用,它并不能阻止 表单 的默认提交行为。结果是,页面仍然会刷新。
Waifulabs
一键生成动漫二次元头像和插图
317
查看详情
解决方案:将 submit 事件监听器绑定到
要正确阻止表单的默认提交行为,必须将 submit 事件监听器绑定到
-
HTML 结构准备:为表单添加一个ID 为了方便在J*aScript中选中表单元素,建议为其添加一个唯一的 id 属性。
<form id="entryForm" class="form"> <!-- ... 表单字段 ... --> <input id="allowedCheck" type="submit" value="Check if you're allowed in" /> </form> -
J*aScript 代码:绑定 submit 事件到表单
// 获取表单元素 const entryForm = document.getElementById("entryForm"); // 为表单添加 submit 事件监听器 entryForm.addEventListener("submit", (event) => { event.preventDefault(); // 核心:阻止表单的默认提交行为(页面刷新) // 以下是原有的表单处理逻辑,现在可以安全执行而不会刷新页面 const messageTxtDiv = document.getElementById("messageTxt"); messageTxtDiv.innerHTML = ""; // 清空消息内容 const drunkValue = parseInt(document.querySelector("#drunk").value, 10); const ageValue = parseInt(document.querySelector("#age").value, 10); const beerBottle = document.getElementById("beer-bottle"); let p = document.createElement("p"); messageTxtDiv.appendChild(p); // 先添加p标签,再设置内容和样式 // 重置消息框样式,以便后续重新设置 messageTxtDiv.className = "message"; // 确保初始状态为基础样式 if (drunkValue < 2 && ageValue >= 18) { beerBottle.src = "../assets/green_beer.svg"; p.innerText = "Please come in."; messageTxtDiv.classList.add("message--success"); // 添加成功样式 } else if (drunkValue >= 2) { beerBottle.src = "../assets/red_beer.svg"; p.innerText = "Sorry, we h*e a legal obligation not to serve intoxicated persons."; messageTxtDiv.classList.add("message--failure"); // 添加失败样式 } else if (ageValue < 18) { beerBottle.src = "../assets/red_beer.svg"; p.innerText = "Sorry, you are too young to enter."; messageTxtDiv.classList.add("message--failure"); // 添加失败样式 } });
整合与优化后的完整代码示例
结合上述解决方案,以下是优化后的HTML和J*aScript代码,解决了表单刷新和 preventDefault() 失效的问题
以上就是解决J*aScript表单提交刷新与preventDefault()失效问题的详细内容,更多请关注其它相关文章!
# 也会
# 企业网站如何优化好
# 东营建设门户网站
# 禁推seo
# 荣昌区策划全网营销推广
# 蔡甸整合营销推广
# 网站建设作业截图
# 淄博网站免费建设公司
# 湖南建设网站app小学
# 国外网站建设推广
# 编程怎么搞网站推广的
# 背景色
# 如何实现
# 移到
# 设置为
# 弹出
# css
# 选择器
# 将其
# 绑定
# 表单
# 点击事件
# css选择器
# ai
# ssl
# app
# 浏览器
# svg
# ajax
# html
# java
# javascript
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
mcjs网页版流畅运行 mcjs低配电脑畅玩入口
Go语言中对Map值调用带指针接收者方法:原理与最佳实践
冬*霸灯泡不亮怎么办_浴霸取暖灯一盏不亮的灯座清洁修复法
vivo云服务网页版登录 怎么登录vivo云服务网页版
京东京造J1和网易云音乐氧气真无线有什么不同_国产电商蓝牙耳机音质对比
优化MinIO list_objects_v2 操作的性能瓶颈与最佳实践
深入理解Go语言中Map值与方法接收器的交互:为什么需要临时变量
荒野行动PC版怎么注册_荒野行动PC版账号注册详细流程图文教程
学习通网页版快速入口 学习通官网网页版直接打开
b站赚钱渠道_b站收益来源
C++20的source_location是什么_C++在编译期获取源码位置信息用于日志和断言
深入理解J*aScript中的B样条曲线与节点向量生成
Odoo 16:在表单视图中基于当前记录动态修改Tree视图属性
windows10怎么查看硬盘序列号_windows10硬盘id查询命令
高德地图总提示网络异常怎么办 高德地图离线导航设置与网络排查方法
cad如何更改注释性对象的比例_cad注释性比例调整方法
CSS布局中意外空白:解决padding-top导致的顶部间距问题
win11如何卸载Windows更新补丁 Win11解决更新导致系统不稳定的问题【修复】
Bing引擎入口最新2025 Bing搜索免费官方登录
抓大鹅无需下载版 抓大鹅秒玩版入口
谷歌google账号注册详细步骤 谷歌账号注册官方教程
没有大陆身份证/银行卡如何实名微信? 亲测有效的几种方法分享
Golang如何优化内存分配与垃圾回收_Golang内存管理与GC优化实践
内存检查:在VS Code中调试C++时的内存视图
小米汽车11月交付量突破40000台!雷军:将继续努力
LINQ to XML为何解析失败? 深入理解C# XDocument的异常处理
德邦快递查询平台 德邦快递物流信息查询入口
如何在Promise链中有效终止错误处理后的执行
css绝对定位元素脱离父容器怎么办_确保父元素position非static
《噬血代码2》新预告片发布 展示游戏剧情
QQ网页版官方账号入口 QQ网页版网页版登录指南
如何使用Rector自动化升级旧代码_通过Composer安装和配置Rector进行代码重构
QQ邮箱官方网页版登录 QQ邮箱个人邮箱快速访问
Mudbox图层蒙版怎么用_Mudbox图层蒙版数字雕刻应用技巧
解决Bootstrap卡片顶部边距导致背景图下移的问题
快手网页版在线登录 快手网页版官网入口快速访问
PyTorch模型训练准确率不提升:诊断与修复常见指标计算错误
微信聊天记录怎么加密_微信聊天记录加密方法
Mac怎么使用表情符号_Mac Emoji快捷键面板
sublime怎么格式化代码_sublime代码美化与一键排版插件配置
Python中高效访问嵌套字典与列表中的键值对
c++中的std::forward_list和std::list有什么不同_c++ forward_list与list区别分析
抖音极速版最新版本 抖音极速版官方下载地址
AO3最新可访问网址 Archive of Our Own官方在线入口
使用J*aScript检测输入元素是否包含在特定类中
Golang如何通过reflect获取匿名字段方法_Golang reflect匿名字段方法访问技巧
c++如何实现一个简单的软件渲染器_c++从零开始的3D图形学
漫蛙2网页版漫画入口 漫蛙漫画在线官方登录
sublime怎么预览Markdown渲染效果_Markdown Preview插件 for sublime教程
谷歌浏览器无痕模式怎么开 Chrome开启无痕浏览设置方法【教程】


2025-11-21
浏览次数:次
返回列表