防止重复提交与验证控件配合使用

为了防止重复提交表单,一般情况下都是在点击按钮后用javascript把提交按钮设为disabled。在asp.net 下通常是使用OnClientClick来实现。

< asp:TextBox  ID ="txt"  runat ="server" ></ asp:TextBox >

<asp:Button ID="btn" runat="server" Text="Button" onclick="btn_Click"  OnClientClick="clientclick()" UseSubmitBehavior="false"/>

 

<script type="text/javascript">

function clientclick()

 

   {
        $(
" #<%= btn.ClientID%> " ).attr( " disabled " , true );
   }
< / script>

但是这种情况下如果使用了验证控件,在验证控件启用的时候,按钮同样会被disabled掉,造成最后无法提交表单。

其实验证控件启用的时候就是控制对应span的显示,我们可以用jquery的选择器得到对应的span的数量,然后再把按钮重新启用就可以了。

我的解决办法:

< script type = " text/javascript " >
   $(document).ready(
function (){
   $(
" #<%= btn.ClientID%> " ).click( function (){
        
var  span = $( " span[id*='Validator']:visible " );
        
if (span.length > 0
        {
            $(
this ).attr( " disabled " , false );
        }
   });
   });
function  clientclick()
   {
        $(
" #<%= btn.ClientID%> " ).attr( " disabled " , true );
   }
< / script>
< asp:TextBox  ID ="txt"  runat ="server" ></ asp:TextBox >
< asp:Button  ID ="btn"  runat ="server"  Text ="Button"  onclick ="btn_Click"   OnClientClick ="clientclick()"  UseSubmitBehavior ="false" />
< asp:RequiredFieldValidator  ID ="Validator"  runat ="server"  
        ControlToValidate
="txt"  ErrorMessage ="RequiredFieldValidator" ></ asp:RequiredFieldValidator >
protected   void  btn_Click( object  sender, EventArgs e)
        {
            
// do someing
        }

转载于:https://www.cnblogs.com/dqw3721/archive/2008/09/09/1287511.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值