点击提交按钮后页面重载问题及阻止重载代码咨询
让我帮你梳理下现有代码里的问题,再给出可行的页面重载阻止方案:
现有代码的几个关键问题
jQuery选择器错误
你写的$("submit")是在找<submit>标签,但HTML里根本没有这个标签!提交按钮通常是<input type="submit">或<button type="submit">,所以正确的选择器应该是$(":submit")(匹配所有提交类型按钮),或者更精准的$("input[type='submit']");如果给按钮加了ID(比如id="submitBtn"),用$("#submitBtn")会更高效。norefresh函数未绑定到表单事件
你定义了norefresh()函数,但没把它和表单的提交事件关联起来——得在<form>标签里加上onsubmit="return norefresh();",这个函数才会生效。PHP_SELF的语法错误
你的$_SERVER[" PHP_SELF "]里PHP_SELF前后多了空格,应该改成$_SERVER["PHP_SELF"],不然PHP会找不到这个超全局变量键,导致action属性出错。
靠谱的阻止页面重载方案
方案1:修正后的jQuery写法
确保选择器正确,且代码在DOM加载完成后执行:
$(document).ready(function() { // 匹配页面中所有提交按钮 $(":submit").click(function(event) { event.preventDefault(); // 这里可以添加你的逻辑,比如表单验证、AJAX提交数据 console.log("提交按钮已点击,页面未重载"); }); });
方案2:通过表单onsubmit事件阻止(纯原生JS)
这种写法不需要依赖jQuery,直接把阻止逻辑绑定到表单的提交事件上:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" onsubmit="return norefresh();"> <!-- 你的表单内容 --> <input type="submit" value="提交"> </form> <script> function norefresh() { // 可在此添加表单验证逻辑,验证不通过也返回false console.log("表单提交,页面未重载"); return false; } </script>
方案3:原生JS事件监听(推荐,分离HTML与JS)
这是更现代的写法,把JS逻辑和HTML结构分开,维护起来更方便:
<form id="landlordForm" method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> <!-- 你的表单内容 --> <input type="submit" value="提交"> </form> <script> document.getElementById('landlordForm').addEventListener('submit', function(event) { event.preventDefault(); // 这里可以用fetch或XMLHttpRequest发送表单数据到后台 console.log("表单提交,页面未重载"); }); </script>
小提示:如果你的最终需求是提交表单数据但不刷新页面,记得在阻止默认行为后,用AJAX(比如jQuery的$.ajax或者原生fetch)把表单数据发送到后台,这样既能完成数据提交,又能保持页面不刷新。
内容的提问来源于stack exchange,提问作者mysticwarlord

