做專

2012-07-24 37 views
2

之前提交延遲我有按鈕做專

<UpdatePanel> 
     <asp:Button CssClass="btn-send" runat="server" 
       OnClick="SendMessage" Text="Send" /> 
    </UpdatePanel> 

服務器端方法

protected void SendMessage(object sender, EventArgs e){...} 

我需要一點延遲,並顯示POST之前進度條動畫。我想爲此使用JavaScript(jQuery)。

如何使這種延遲提交
1)無服務器延遲
2)不使用客戶端腳本,點擊服務器按鈕第二個按鈕?

回答

1

你可以嘗試這樣的事情......

<asp:Button runat="server" OnClick="SendMessage" Text="Send" 
    OnClientClick="return sendMessage(this);" /> 

<script type="text/javascript"> 
    var sendBtn = null; 
    function sendMessage(btn){ 
    if(sendBtn==null){ 
     sendBtn = btn; 
     window.setTimeout(function(){ sendBtn.click(); }, 1000); 
     // DO YOUR VISUAL STUFF HERE 
     return false; 
    }else{ 
     return true; 
    } 
    } 
</script> 

的想法是的點擊該按鈕首先存儲按鈕對象,設置超時以單擊該按鈕,然後執行您想要執行的視覺操作。

一秒鐘後,該按鈕被再次點擊(這次不是做超時部分)

(我還沒有時間去學習jQuery,但我敢肯定有一個更簡單的方法來做到這與它)

1

你可以在沒有jQuery的情況下執行此操作,只需使用常規的Javascript setTimeout即可。

+1

請不要鏈接到w3schools - 請參閱http://w3fools.com的原因。您可能已鏈接到顯示正確信息的頁面,但該網站包含大量不正確且誤導性的信息 - 並以任何方式鏈接到網站使其具有可信性**不**值得 – freefaller 2012-07-24 13:05:22

+0

另外,它是'setTimeout'而不是'setTimeOut'(JavaScript區分大小寫) – freefaller 2012-07-24 13:06:12

+0

感謝您的知識。我不知道。儘管在這種情況下setTimeout是準確的。感謝您對套管的更正。 – Hammerstein 2012-07-24 13:45:34

0

您可以捕獲表單的onsubmit,然後當您提交(按下按鈕)時,您可以打開頁面的等待消息。所以,你加上的Page_Load()

Page.Form.Attributes["onsubmit"] = "return AllowFormToRun();"; 

和JavaScript這一行:

<script> 
    function AllowFormToRun() 
    { 
     setTimeout(OpenWaitMsg, 10); 
     return true; 
    } 

    function OpenWaitMsg() 
    { 
     // open here the wait div 
    } 
</script> 
0

你應該使用Event.preventDefault()上的提交按鈕點擊,以防止頁面提交點擊。然後開始你的進度動畫,當它完成時,從js調用你的表單提交。

$("form").submit(function(e){ 
    var form = this; 
    e.preventDefault(); 
    function animation(total,callback){ 
    //perform your animation 
    callback(); 
    }; 

    animation(100,function(){ 
    form.submit(); 
    }); 
}); 
+0

實際上,形式可能是e.currentTarget ..只是做了我的頭頂,沒有測試..但它應該給你一個想法如何完成:) – RGB 2012-07-24 13:37:05

+0

通常它很好,但form.submit ()強制頁面刷新並且UpdatePanel不能工作 – AlexKot 2012-07-24 14:48:39

+0

它們彼此之間不應該有任何關係,因爲表單在客戶端的提交處理程序中有作用域。它在動畫完成時被調用。 – RGB 2012-07-24 15:55:04