我有一个提交回复页,由于网速问题用户可以重复提交,我想控制按钮的可用状态,可是我写了js设置按钮的disabled,可是就不执行服务端的保存回复的事件了,我怎么能实现让按钮变灰不可用,同时也可以执行服务端的保存事件啊?虽然网上都说设置disabled,可是设置了这个属性真的就不执行服务端事件了,急求解决方案 贴出代码:
aspx:
<asp:Button ID="btn_SubmitKeyWord" runat="server" Text="确定" OnClick="btn_SubmitKeyWord_Click"
OnClientClick="return Check(this);" />js:
function Check(obj) {
            var keyWord = document.getElementById('<%=DropDownList_KeyWord.ClientID%>');
            if (keyWord.value == "请选择") {
                alert("请选择关键字");
                return false;
            }
            else {
                obj.disabled = true;
                return true;
            }
            return false;
        } 

解决方案 »

  1.   

    把 Button 换成 <input type="button" runat="server" onclick="return Check(this);" onserverClick="btn_SubmitKeyWord_Click" id="btn_SubmitKeyWord" />
    或者
    <asp:Button ID="btn_SubmitKeyWord" runat="server" Text="确定" OnClick="btn_SubmitKeyWord_Click"
    OnClientClick="if(Check(this)==false){return false;}" />
      

  2.   

    billclinton8  你给的结果跟之前的效果一样,还是不走服务端的事件
      

  3.   

     #4楼 得分:0回复于:2010-08-05 11:12:07lz 你是想在什么时候设置按钮不可用 是在单击按钮时 还是数据处理后  
     
     
    我想在用户点击了提交之后设置按钮不可用,我也试过在服务端的事件上来就先设置了按钮的enable=false属性,可是页面上是等提交完表单后才把按钮变灰的,所以网速慢的时候用户还是可以连续点击,所以我就想用户一点击提交,通过客户端马上就把按钮变灰,这样避免用户重复提交,可是总么弄都不成,就是不走服务端事件
      

  4.   

    点下 disable
    提交处理
    返回 
    enable
      

  5.   

     #7楼 得分:0回复于:2010-08-05 11:18:13
    点下 disable
    提交处理
    返回  
    enable 
    ---------------------------------------------
    什么意思啊?我是新手,不太明白,能麻烦你说的清楚一点吗?
     
      

  6.   

    js:
    function Check(obj) {
      var keyWord = document.getElementById('<%=DropDownList_KeyWord.ClientID%>');
      if (keyWord.value == "请选择") {
      alert("请选择关键字");
      return false;
      }
      else {
      //obj.disabled = true;
      return true;
      }
      return false;
      }  
    obj.disabled = true; 这个个不要
    在btn_SubmitKeyWord_Click 事件里
    第一行: btn_SubmitKeyWord.Enable=false;
    最后一行为:btn_SubmitKeyWord.Enable=true;
      

  7.   

    obj.disabled = true 改为 : obj.style.display= "none";
    不过这个不是不可用 是在界面上看不到了
      

  8.   

    用ajax来处理你的btn_SubmitKeyWord_Click事件
      

  9.   

    按钮如下<asp:Button ID="imgAdd" runat="server" CssClass="button" OnClick="imgAdd_Click"  onClientClick="DisableButton" Text="上传"/>为按钮添加客户端事件DisableButton() ,如果你愿意,还可以给button搞一个看上去很像被disabled了的样式        function DisableButton() {
                document.getElementById("ctl00_ContentMain_imgAdd").value = '正在处理,请耐心等待勿重复上传....';
                document.getElementById("ctl00_ContentMain_imgAdd").onclick = Function("return false;");
            }
            function ResetBtn() {
                document.getElementById("ctl00_ContentMain_imgAdd").onclick = "beforeAdd()";
                document.getElementById("ctl00_ContentMain_imgAdd").value = '上传';
            }
    执行完服务端时间后,手动调用ResetBtn()  System.Web.UI.ScriptManager.RegisterStartupScript(this, this.GetType(), "ok", "<script language='javascript' type='text/javascript'>ResetBtn() ;</script>", false);
    挺笨挺原始的办法,抛砖引玉
      

  10.   

    做过尝试,放在客户端的buttonclick事件里写的任何的页面元素的控制操作(包括修改按钮名称、修改按钮状态),都只能在整个buttonclick事件处理结束以后发生当时还想到另外一种处理方式,就是把buttonclick设置disabled等,将业务数据做异步处理,不过这个方法当时我没尝试完,不知道在异步的callback函数里能否修改页面元素的状态
      

  11.   

    <input type="submit" name="bt_Submit" value="提交回复" id="bt_Submit" class="button" />&nbsp; </div> 
    <script type="text/javascript">// <![CDATA[ 
                            document.getElementById("bt_Submit").onclick=function() 
                            { 
                                setTimeout(function() 
                                { 
                                    var btn = document.getElementById("bt_Submit"); 
                                    btn.disabled = true; 
                                    setTimeout(function(){btn.disabled=false}, 10000); 
                                },10); 
                            } 
                            //]]> </script> 呵呵,这是CSDN在用的方法 
      

  12.   

    教你个骗人的办法,隐藏一个disabled的 的Button提交的时候把隐藏的显示出来把真正的按钮隐藏
      

  13.   


    是的,可以点,但是不会有任何的动作:document.getElementById("ctl00_ContentMain_imgAdd").onclick = Function("return false;");
    这句设置让按钮不会执行任何的操作了
      

  14.   


    按钮不会变灰,文字会修改为“请勿重复点击”的字样,而且重复点击也不会有任何的效果
    如果需要按钮变灰,可以结合24楼的,将这个按钮的display变为'none',让另外一个隐藏的disabled的按钮显示出来
    等执行完了,再恢复回来
      

  15.   

    在事件里面加上        Response.Redirect(Request.Url.ToString());
    这个试试。就不会重复提交了
      

  16.   


    将按钮设置为  服务器控件button1.Enable = false;
    提交
    button1.Enable = true;