jquery - UpdatePanel 动画仅在超时后运行

标签 jquery asp.net updatepanel updatepanelanimationexte

考虑以下场景:

MasterpageFile1:

<%@ Master Language="VB" AutoEventWireup="false" CodeBehind="Frame.master.vb" Inherits="Project.Frame" ClientIDMode="Static" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server" name="form1">
        <asp:ContentPlaceHolder ID="BodyPlaceHolder" runat="server">
        </asp:ContentPlaceHolder>
    </form>
</body>
</html>

嵌套母版页文件:

<%@ Master Language="VB" MasterPageFile="/Project/Code/MasterPages/Frame.Master" CodeBehind="Master2.master.vb" Inherits="Project.Master2" %>
<asp:Content ID="Content2" ContentPlaceHolderID="BodyPlaceHolder" runat="server">
    <input type="submit" id="btSubmit" runat="server" value="start" class="input" />
    <asp:UpdatePanel ID="up" runat="server" UpdateMode="Always">
        <ContentTemplate>
            <div>CALCULATION RESULT GETS DISPLAYED HERE</div>
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="btSubmit" />
        </Triggers>
    </asp:UpdatePanel>
    <ajaxToolkit:UpdatePanelAnimationExtender ID="upae" runat="server" TargetControlID="up">
        <Animations>
            <OnUpdating>
                <Sequence>
                    <ScriptAction FPS="20" Duration="0.5" script="DoSomething();" />
                </Sequence>
            </OnUpdating>
            <OnUpdated>
                <Parallel>
                    <ScriptAction FPS="20" Duration="0" script="DoSomethingElse();" />
                </Parallel>
            </OnUpdated>
        </Animations>
    </ajaxToolkit:UpdatePanelAnimationExtender>
</asp:Content>

加载一些样式的 ASPX 页面。

以及以下 jQuery 代码:

$(document).ready(function () {
    $("#btSubmit").click();
});

此代码触发 UpdatePanel 进行刷新。 OnUpdating 动画正在播放,服务器执行一些计算并将结果发送到客户端。客户端构建结果,但 OnUpdatedAnimation 永远不会播放。

如果我将 jQuery 代码更改为以下内容,它就可以正常工作。

$(document).ready(function () {
    setTimeout(function () {
        $("#btSubmit").click();
    }, 1500);
});

有人可以告诉我,为什么会发生这种情况以及如何实现,计算在 DOM 准备好时开始,而不是 1.5 秒后开始?

亲切的问候, 索伦

最佳答案

我认为出现这种行为的原因是,当 btSubmit 点击发生部分回发时,并非所有客户端对象都被初始化。

尝试使用此脚本(将其放在 ScriptManager 控件之后):

Sys.Application.add_load(applicationLoadHandler);

function applicationLoadHandler(sender, args) {
     if (args.get_isPartialLoad() !== true) {
          $("#btSubmit").click();
     }
}

关于jquery - UpdatePanel 动画仅在超时后运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12069045/

相关文章:

javascript - 如何在加载新选项卡时显示每个选项卡内容并隐藏以前的内容

jQuery:如何找到不包括按钮的第一个可见输入/选择/文本区域?

c# - 通过 C# 代码启用/禁用 <a> 标签

ASP.NET核心: Calling web api returns 500

javascript - 设置始终聚焦于文本框(ASP.NET、Updatepanel)

jquery - 我试图在前面添加一个 div 并使用 AJAX 加载其中的内容,但 div 仍然为空

.net - 创建 sha1 哈希时如何使用 machineKey validationKey?

asp.net - 防止在 UpdatePanel 中双击 LinkBut​​ton

c# - 从 VS 2005 转换到 VS 2008 后,更新面板不起作用

javascript - JS : How to prevent form being submited several times?