按钮本身不跳转,真正触发跳转或刷新的是带 href 的 标签、表单内未设 type 的 或

HTML按钮标签本身不会跳转,真正需要阻止默认行为的是 @#@#@#@#@#@#@#@#@#@0<br><script>document.getElementById('myLink').addEventListener('click', e => {<br> e.preventDefault();<br> alert('已拦截跳转');<br>});</script><h3>阻止表单内按钮刷新页面的关键操作</h3>
<p>不是给按钮加 <code>preventDefault,而是监听 form 的 submit 事件:
- 表单提交可能由点击 submit 按钮触发,也可能由回车键触发 —— 监听
form.submit能一并覆盖 - 在事件回调里调用
e.preventDefault(),之后再执行你的 JS 逻辑(如发请求、校验、弹窗等) - 示例:
<script>document.getElementById('myForm').addEventListener('submit', e => {<br> e.preventDefault();<br> console.log('表单已拦截,可走 AJAX');<br>});</script>
更轻量的替代方案:改 type 或去 href
如果只是静态交互,无需复杂事件流,可以绕过 JS 拦截:
- 把
<button></button>明确写成<button type="button"></button>:它彻底失去提交能力,点击只触发 click 事件 - 把
<a></a>的href去掉或设为javascript:void(0):前者语义丢失需补 CSS,后者保留链接外观但无跳转(不推荐用于可访问性要求高的场景) - 注意:
return false在原生 JS 中 ≠preventDefault,它只退出函数,不阻止默认行为
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











