我用图片提交form,后台显示提交两次,而用button提交,是正常的,高手来看看。 function postForm() { //这是提交form的js代码
with (document.getElementById("userForm")) {
action="/pro1.1/UserSer?action=login";
method="post";
submit();
}
}
<form name="userForm" target="_self" >
<input type=button onclick="postForm();" /> //这种方式提交,是正确的,只提交一次
</form>
<form name="userForm" target="_self" >
<input type=image src="images/dl.gif" onclick="postForm();"> //这种方式提交,提交了两次
</form>
with (document.getElementById("userForm")) {
action="/pro1.1/UserSer?action=login";
method="post";
submit();
}
}
<form name="userForm" target="_self" >
<input type=button onclick="postForm();" /> //这种方式提交,是正确的,只提交一次
</form>
<form name="userForm" target="_self" >
<input type=image src="images/dl.gif" onclick="postForm();"> //这种方式提交,提交了两次
</form>
不会的,我都试了几十次了。
另外这种方法也是可以正常提交的:
<a href="javascript:postForm();" >
<img src="images/dl.gif" style="border:0px"/>
</a>
创建一个图像控件,该控件单击后将导致表单立即被提交。
找到原因了,下面是传送门。今天又遇到个小问题,单击<input type='image'>的时候会伴随着页面提交。
由于本来就写有onclick事件,所以在具体是什么导致页面提交上纠缠了好半天。最后用排除法,把整个页面的其他东西一点点删除来排查。发现在只剩form和<input type='image'>的时候还是会提交,把form去掉就不会了。觉得可能是type='image'和type='submit'有同样的效果吧。同事提供了个很好的解决方案,就是在onclick事件中让它返回false。具体写成如下这样,就不会再提交表单了:
<input type='image' onclick="return false;">
然后上网查了下,image的描述是“创建一个图像控件,该控件单击后将导致表单立即被提交。”。不知道谁设计的,太有创意了,要不是试出来,打死我也想不到啊。