Javascript 在投递前延迟提交

Javascript 在投递前延迟提交,javascript,jquery,asp.net,client,submit,Javascript,Jquery,Asp.net,Client,Submit,我有钮扣 <UpdatePanel> <asp:Button CssClass="btn-send" runat="server" OnClick="SendMessage" Text="Send" /> </UpdatePanel> 我需要做一点延迟,并在发布前显示进度条动画。我想使用javascript(jquery)来实现这一点 如何使此延迟提交 1) 没有服务器延迟 2) 没有客户端脚本的第

我有钮扣

   <UpdatePanel>
         <asp:Button CssClass="btn-send" runat="server"
              OnClick="SendMessage" Text="Send" />
    </UpdatePanel>
我需要做一点延迟,并在发布前显示进度条动画。我想使用javascript(jquery)来实现这一点

如何使此延迟提交
1) 没有服务器延迟

2) 没有客户端脚本的第二个按钮,单击服务器按钮?

您可以不用jQuery,只需使用常规Javascript即可完成此操作

您可以捕获表单的
onsubmit
,然后在提交后(按下按钮)打开页面的等待消息。所以您在第_Load()页上添加了这一行

还有javascript:

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

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

函数AllowFormToRun()
{
设置超时(OpenWaitMsg,10);
返回true;
}
函数OpenWaitMsg()
{
//在这里打开等候室
}

你可以试试这样的东西

<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>

var sendBtn=null;
功能发送消息(btn){
if(sendBtn==null){
sendBtn=btn;
setTimeout(函数(){sendBtn.click();},1000);
//在这里做你的视觉作品
返回false;
}否则{
返回true;
}
}
其思想是,单击按钮首先存储button对象,设置单击按钮的超时时间,然后执行您想要执行的可视操作

一秒钟后,再次单击按钮(这次不执行超时部分)


(我还没有时间学习jquery,但我相信有一种更简单的方法可以做到这一点)

您应该在提交按钮上使用
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();
  });
});

请不要链接到w3schools-有关原因,请参阅。你可能链接到了一个显示正确信息的页面,但该站点包含了大量错误和误导性信息——并且以任何方式链接到该站点都会给它带来可信度,这是不值得的。另外,它是
setTimeout
而不是
setTimeout
(JavaScript区分大小写)谢谢你的知识。我不知道。不过,在这种情况下,setTimeout是准确的。谢谢你对套管的更正。不用担心-只是传播知识。。。知道的人越多越好(如果你使用谷歌搜索,并且拥有谷歌帐户,你可以阻止他们的所有结果)Javascript setTimeout()不会延迟发布。实际上,表单可能是e.currentTarget..只是在我脑子里做了这件事,没有经过测试..但它应该能让你知道如何完成:)一般来说没问题,但是form.submit()强制页面刷新和UpdatePanel不起作用,因为表单的作用域在客户端的提交处理程序中,所以它们之间不应该有任何关系。动画完成后将调用它。
<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>
$("form").submit(function(e){
  var form = this;
  e.preventDefault();
  function animation(total,callback){
    //perform your animation
    callback();
  };

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