|zyciis| CSDN的发布贴子的按钮,只点后变灰,这个设计是如何设计的,因为小弟我做的经常会出现错误 如页面没有反应

|zyciis| CSDN的发布贴子的按钮,只点后变灰,这个设计是怎么设计的,因为我做的经常会出现异常 如页面没有反应
CSDN,这个不会出错
我原来的就添加onclientclick的时候给他变灰
但验证不过
后来加上if(pagevalid??反正这里是验证是否通过) 再变灰,
但还是有时候没有反应 一直查不到原因

但CSDN这个好像不会出错
他的设计思想是怎样的

谢谢

------解决方案--------------------
谁说不会出错?我这边网速慢就天天错~

JS做的变灰不可见吧~
------解决方案--------------------
用AJAX控件了吧。
------解决方案--------------------
csdn这个变灰后,点了好像一样可以提交-_-!

------解决方案--------------------
正常的.灰着的时候应该就不能点才对.

直接用js脚本控制即可.
------解决方案--------------------
一般是这个步骤:

提交
变灰
回调
成功或失败都变回来
------解决方案--------------------
探讨
一般是这个步骤:

提交
变灰
回调
成功或失败都变回来

------解决方案--------------------
破CSDN。。。还天天用AJAX。。用的我天天好友那里都有个(1)
------解决方案--------------------
探讨
破CSDN。。。还天天用AJAX。。用的我天天好友那里都有个(1)

------解决方案--------------------
点击 
验证是否控件验证通过 
将控件变灰 完 后面的就是自动提交 

但是页面有时候点击了,验证通过了,也变灰了,但是页面就是没有反应 
找不到原因 闷 
================
那要看你具体代码怎么实现的了.

一般都是客户端做.
点击
变灰
验证(可能有客户端的,可能会有服务器端的)
验证失败了直接返回,不提交,按钮恢复
验证成功通过,就提交
------解决方案--------------------
探讨
破CSDN。。。还天天用AJAX。。用的我天天好友那里都有个(1)

------解决方案--------------------
HTML code


<asp:UpdateProgress ID="UpdateProgress1" runat="server" DisplayAfter="0" DynamicLayout="false">
    <ProgressTemplate>
        <span style="color:Red">Loading...</span>
    </ProgressTemplate>
</asp:UpdateProgress>

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <%= DateTime.Now %><br />
        <asp:Label ID="Label1" runat="server" Text=""></asp:Label><br />
        <asp:Button ID="btnPrecedence" runat="server" Text="优先" OnClick="Button_OnClick" />
        <asp:Button ID="Button2" runat="server" Text="普通" OnClick="Button_OnClick" />
    </ContentTemplate>
</asp:UpdatePanel>

<script type="text/javascript" language="javascript">
    var lastPostBackButtonId = null;
    var btnPrecedenceId = "<%= this.btnPrecedence.ClientID %>";
    
    Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(
        function(sender, e)
        {
            var prm = Sys.WebForms.PageRequestManager.getInstance();
            if (prm.get_isInAsyncPostBack())
            {
                if (lastPostBackButtonId == btnPrecedenceId)
                {
                    e.set_cancel(true);
                    
                    if (e.get_postBackElement().id == btnPrecedenceId)
                    {
                        showMessage("不可重复发起优先的刷新。");
                    }
                    else
                    {
                        showMessage("请等待优先的刷新结束。");
                    }
                    
                    return;
                }
                else if (e.get_postBackElement().id == btnPrecedenceId)
                {
                    showMessage("发起优先的刷新,普通的刷新将被取消。");
                }
                else
                {
                    showMessage("重新发起普通的刷新,前一次提交将被取消。");
                }
            }
            
            lastPostBackButtonId = e.get_postBackElement().id;
        });
</script>

------解决方案--------------------
C# code

protected void Button_OnClick(object sender, EventArgs e)
    {
        Thread.Sleep(3000);

        Button button = sender as Button;
        this.Label1.Text = String.Format("您点击了“{0}”按钮", button.Text);
    }

------解决方案--------------------
点按钮,变灰,ajax调用服务器端,返回
------解决方案--------------------
this.button1.enable=false;





//执行的代码



this.button1.enable=true;
------解决方案--------------------
探讨
this.button1.enable=false;


//执行的代码


this.button1.enable=true;

------解决方案--------------------
探讨
RE:yanrabbit163
------------------
我不要AjAx控件
我要添加这个功能主要是网速慢的时候防止用户多次提交

谢谢

------解决方案--------------------
点提交时再一个DIv层过上面去就不能再点了