关于Onsubmit方法返回false表单仍然被提交的原因
2017-12-18 10:24
459 查看
今天在做项目的时候偶然发现一个很奇怪的现象,下面这段HTML代码看起来很正常,没有任何问题(除了用于示例的页面没排,所以很丑):
运行后的页面:
我没有输入任何内容,点击提交按钮,此时弹出提示框,一切看起来很正常:
但是此时奇迹发生了,页面竟然提交了:
纠结了很久,终于找到了原因:onsubmit 这个方法是在提交表单时产生的,也就是先提交表单后调用方法,有点类似do while的味道。
在网上看到了类似结论,把按钮换成button类型的,再使用onclick()就好了:
改用代码:
这样确实就没问题了。
不过其实当我们的表单项一旦大于一项的时候,onsubmit验证不通过就不会提交了:
此时不输入内容,表单就不会提交了。
以上,记录学习。
<html> <head> <script type="text/javascript"> function initadd() { var name = document.getElementById("name"); if (name.value.length < 2) { alert("请输入正确的用户名"); return false; } return true; } </script> </head> <body> <form action="test.jsp" onsubmit="initadd()"> 添加用户:<input type="text" name="name"> <input type="submit" value="提交"> </form> </body> </html>
运行后的页面:
我没有输入任何内容,点击提交按钮,此时弹出提示框,一切看起来很正常:
但是此时奇迹发生了,页面竟然提交了:
纠结了很久,终于找到了原因:onsubmit 这个方法是在提交表单时产生的,也就是先提交表单后调用方法,有点类似do while的味道。
在网上看到了类似结论,把按钮换成button类型的,再使用onclick()就好了:
改用代码:
<html> <head> <script type="text/javascript"> function initadd() { var name = document.getElementById("name"); if (name.value.length < 2) { alert("请输入正确的用户名"); return; } var userForm = document.getElementById("userForm"); userForm.action = "test.jsp"; userForm.submit(); } </script> </head> <body> <form name="userForm"> 添加用户:<input type="text" name="name"> <input type="button" value="提交" onclick="initadd()"> </form> </body> </html>
这样确实就没问题了。
不过其实当我们的表单项一旦大于一项的时候,onsubmit验证不通过就不会提交了:
<html> <head> <script type="text/javascript"> function initadd() { var name = document.getElementById("name"); var sex = document.getElementById("sex"); if (name.value.length < 2) { alert("请输入正确的用户名"); return false; } if (sex.value.length == 0) { alert("请输入正确的性别"); return false; } return true; } </script> </head> <body> <form action="test.jsp" onsubmit="return initadd()"> 添加用户:<input type="text" name="name"> 用户性别:<input type="password" name="sex"> <input type="submit" value="提交"> </form> </body> </html>
此时不输入内容,表单就不会提交了。
以上,记录学习。
相关文章推荐
- Jquery 在submit方法中返回false以后无法提交表单的解决方法。
- onsubmit="return check() 给form加onsubmit 验证所有表单后再提交,可以用返回false 来阻止submit提交
- onsubmit="return check() 给form加onsubmit 验证所有表单后再提交,可以用返回false 来阻止submit提交
- 有关onsubmit return false 阻止form表单提交:js
- 总结:form中使用onSubmit="return false"防止表单自动提交,以及submit和button提交表单的区别
- FORM中使用onSubmit="return false"防止表单自动提交,以及submit和button提交表单的区别
- 关于HTMLdeform表单提交onclick和onsubmit
- javascript 解决表单仍然提交即使监听处理函数返回false
- 【HTML/CSS】 JS中form表单中的onsubmit监听返回 true或者false用法
- ExtJs中submit提交表单返回json字符不能再前台显示的解决方法
- onsubmit=return false阻止form表单提交
- onsubmit="false"可以阻止表单提交
- javascript 解决表单仍然提交即使监听处理函数返回false
- [转载]onsubmit=return false阻止form表单提交javascript
- FORM中使用onSubmit="return false"防止表单自动提交,以及submit和button提交表单的区别
- 关于在用curl函数post网页数据时,遇上表单提交 type为submit 类型而且没有name和id时可能遇到的问题及其解决方法
- JS和jQuery使用submit方法无法提交表单的原因分析及解决办法
- 关于flask表单验证json数据不通过总是返回False的解决方法(flask wtforms: Validation always false)
- FORM中使用onSubmit="return false"防止表单自动提交,以及submit和button提交表单的区别
- 提交表单之前对表单进行检查的方法 onsubmit="return checkSubmit();"