button的click事件触发的提交问题

来源:互联网 发布:java 构架师 编辑:程序博客网 时间:2024/04/28 23:19

最近的项目中遇到一个问题,input(button)的onclick事件调用js方法之后,虽然在方法中写了return false,却依旧执行了onserverclick事件调用的后台方法,然后换成Asp:Button,写在OnClientClick事件中,也执行了OnClick事件。不仅是提交部分,在网络较慢的情况下,后台btnSubmit_ServerClick事件会多次触发,导致向数据库插入了多条资料。

此处需注意的就是如下两个按钮中,inptut(button)的onclick方法和Asp:Button的OnClientClick方法等效,onserverclick方法和OnClick方法等效。

<input type="button" id="btnSubmit" runat="server" value="確定" onclick="CheckInfoAdd();" onserverclick="btnSubmit_ServerClick" /><asp:Button ID="btnSubmit" runat="server" Text="确定" OnClick="btnSubmit_ServerClick" OnClientClick="CheckInfoAdd();" />
CheckInfoAdd()方法如下:

function CheckInfoAdd() {            var txtCheckDate = $("#txtCheckDate").val();            var txtCheckStatus = $("#ddlStatus").val();            //var txtRemarks = $("#txtRemarks").val();            if (txtCheckDate && txtCheckStatus) {                __doPostBack("btnSubmit", "");            }            else {                alert("时间和状况不能为空!");                return false;//<span style="color:#ff0000;">here to 阻止提交</span>            }        }
如上,在return false后依旧没有停止提交,后来检查想起来在什么地方看到过需要在click事件中增加return,于是加上后,OK,解决了这个问题,后台事件多次触发的问题也解决了,但是却不知道是什么原理,所以大概查了下,详细说明可见如下链接,这个算是说的比较详细的。

这是修改后的代码:

<input type="button" id="btnSubmit" runat="server" value="確定" onclick="return CheckInfoAdd();" onserverclick="btnSubmit_ServerClick" /><asp:Button ID="btnSubmit" runat="server" Text="确定" OnClick="btnSubmit_ServerClick" OnClientClick="return CheckInfoAdd();" />

http://blog.csdn.net/gchonghavefun/article/details/8112830  

0 0
原创粉丝点击