asp.net按钮多次提交数据解决方法
看了一下他的代码,前端页面是一个submit类型的HTML按钮:
<input type="submit" value="确 认" id="Submit1" name="Submit1" runat="server" style="FONT-WEIGHT: bold; FONT-SIZE: 18pt"
后置代码里面有个对应的private void Submit1_ServerClick(object sender, System.EventArgs e)函数提交数据。
里面已经有一句Submit1.Disabled = true;放在第一句,表明已经考虑了禁止双击。
那为十么还是会出现提交2次的情况呢?考虑该句代码要在服务器端执行,响应较慢。在网速比较慢的情况下,很容易造成用户的双击快于按钮的disable。原因找到了,就要考虑结解决办法,首先考虑使用JS来disable按钮,客户端执行,响应速度很快。
于是写了个JS禁用按钮的函数:function disableBtn() { Form1.Submit1 .disabled =true; }。按钮的代码改为:<input type="submit" value="确 认" id="Submit1" name="Submit1" runat="server" onclick="disableBtn()" 。结果发现点击后按钮立即变灰,后置代码却没有执行,不能提交数据。
没辙了,再去网上搜一把,好多办法都试了,包括使用onserverclick,都没有用,那么就自己再改改吧。
最后改成:
JS:function disableBtn() { Form1.Submit1 .disabled =true; return true; }
按钮:<input type="button" value="确 认" id="Submit1" name="Submit1" runat="server" onclick="javascript:if(disableBtn())"
后置代码函数里面最后加了一句:Page.RegisterStartupScript( "enBtn ", "
<script> document.getElementById( 'Submit1 ').disabled=false;
</script> ");
试了一下,没想到OK了,点击一次后按钮立即变灰,同时数据仅提交一次。严重注意按钮的type必须是button,不能是submit,而且不能使用asp.net的服务器按钮控件偶!
代码照上修改后朋友试运行了一个晚上,没有任何问题!bug解决了!

浙公网安备 33010602011771号