今天碰见一个奇葩的问题,自己研究了半个小时都没研究明白啥情况,最后查资料、问同学解决了,记录一下
问题描述:
在jsp页面中,有一个form表单,在form表单中需要增加一个新的按钮,按钮的作用是触发一个方法,可以在页面中显示一个弹出的窗口,进行录入等功能。
最初我的做法是:在相应的位置增加了一个button,然后将onclick方法绑定在button上,完成onclick方法,但写完调试时发现一个重大的问题,在执行完方法体后,当前页会莫名其妙的自动刷新并执行了onready方法,导致根本不能获得所需要的效果。
源代码逻辑伪代码表示如下:
<form>
......
<button onclick="clickFun()">一个按钮</button>
......
</form>
<script>
function clickFun(){
$("#xxxDiv").show();
}
</script>
在js里打断点,发现执行完clickFun后直接跳到JQ的代码里了,肯定不是这个原因,并且方法结构很简单,半天找不到原因是啥。
解决:
解决的思路很简单,要么是 将button放在form表单外 ,或者 用input type=‘button’ 代替 button组件,还有一种方法是在form标签内指定 οnsubmit='return false'
原因分析:
form表单内的button会自动提交表单数据到form所在的action中,在浏览器的效果就是刷新了当前的页面,为避免这种情况的出现需要指定onsubmit,或者使用其他的提交方法。