在POST之前提交延迟

时间:2012-07-24 13:00:56

标签: javascript jquery asp.net client submit

我有按钮

   <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 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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,但我确信有更简单的方法可以用它来学习)

答案 2 :(得分: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>

答案 3 :(得分: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();
  });
});