添加return false后表单无法提交至welcome.php问题求助
嘿,我完全懂你遇到的糟心事——本来好好的表单提交功能,加了return false想避免注册出问题,结果倒好,哪怕所有校验都达标了,表单也死活跳不到welcome.php,对吧?
问题根源
你加的return false在表单提交的回调里是“一刀切”的——它会同时阻止表单的默认提交行为和事件冒泡,不管你的校验有没有通过,只要函数最后返回false,表单就不会往welcome.php提交。你需要的是只在校验失败时阻止提交,校验通过就让表单走正常流程。
修复方案
调整你的校验函数逻辑,只有当校验不通过时才返回false阻止提交,校验通过则返回true让表单正常提交。另外还要注意正确传递event参数,避免event.preventDefault()报错。
修改后的代码示例:
<html> <head> <script> // 记得接收event参数 function myFunction(event) { var passw_1 = document.myform.password1.value; var passw_2 = document.myform.password2.value; // 只有密码不一致时才阻止提交 if (passw_1 != passw_2) { alert("You didn't enter the same password."); event.preventDefault(); return false; } // 校验通过,允许表单提交到welcome.php return true; } </script> </head> <body> <!-- 重点:onsubmit要返回函数的执行结果 --> <form name="myform" action="welcome.php" method="post" onsubmit="return myFunction(event)"> <!-- 用户名、邮箱输入框 --> <input type="text" name="username" placeholder="Username"> <input type="email" name="email" placeholder="Email"> <!-- 密码输入框 --> <input type="password" name="password1" placeholder="Password"> <input type="password" name="password2" placeholder="Confirm Password"> <input type="submit" value="Submit"> </form> </body> </html>
关键细节
表单的onsubmit="return myFunction(event)"是核心:当函数返回true时,浏览器会执行默认的表单提交动作(跳转到welcome.php);返回false时则会阻止提交。这样就能精准控制只有校验失败时才拦截,校验通过就正常提交啦。
内容的提问来源于stack exchange,提问作者Leo Li
相关产品推荐
相关产品推荐

