3

我有按钮

   <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) 没有带有客户端脚本的第二个按钮,单击服务器按钮?

4

4 回答 4

2

你可以试试这样的...

<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,但我确信有一种更简单的方法可以做到这一点)

于 2012-07-24T13:20:55.513 回答
1

您可以在没有 jQuery 的情况下执行此操作,只需使用常规 Javascript setTimeout即可。

于 2012-07-24T13:03:14.100 回答
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>
于 2012-07-24T13:14:05.273 回答
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();
  });
});
于 2012-07-24T13:35:44.877 回答