在jQuery中延迟/超时回发的方法?

Posted

技术标签:

【中文标题】在jQuery中延迟/超时回发的方法?【英文标题】:Way to delay/timeout postback in jQuery? 【发布时间】:2015-09-13 07:36:12 【问题描述】:

有没有办法延迟/超时从 jQuery 中的 listview 按钮回发?我想在回发之前制作淡出动画,当点击按钮时触发。有什么想法吗?

我的代码:

$(document).ready(function () 
    $('.btndown').click(function () 
        $('.imageset').animate( 'opacity': 0 , 1000);
    );
);

按钮标记,当它被点击时得到回发:

<div class="btndown">
      <asp:DataPager ID="DataPager2" runat="server" PagedControlID="Listview1" PageSize="3">
            <Fields>
                <asp:NextPreviousPagerField ButtonType="Image" FirstPageText="" LastPageText="" NextPageImageUrl="~/images/arrowbtndown.png" NextPageText="" PreviousPageText="" ShowPreviousPageButton="False"/>
            </Fields>
      </asp:DataPager>
</div>

按钮输出:

<input type="image" name="ctl00$ContentPlaceHolder1$DataPager2$ctl00$ctl00" src="images/arrowbtndown.png">

【问题讨论】:

您的回发是什么样的?也提供。 回发正在更改列表视图中的页面。我想在回发之前将它淡出,因为在 pageLoad 上我有淡入,所以它会是一个平滑的淡出/淡入效果。 @Ashiv3r:发布您的按钮标记,n 何时回发? 【参考方案1】:

不要使用超时,使用animation complete callback。

// This stops the `postback` from being fired on the `<asp>` generated button.
$('.btndown input').click(function(e)
    e.preventDefault();
);

$('.btndown').click(function (e) 
    e.preventDefault();
    $('.imageset').animate(
       'opacity': 0
    , 1000, function() 
          // Animation has completed
          // Trigger the 'postback' JS function, whatever this may be.
    );
);

取决于输出的内容:

<asp:DataPager ID="DataPager2" runat="server" PagedControlID="Listview1" PageSize="3">
        <Fields>
           <asp:NextPreviousPagerField ButtonType="Image" FirstPageText="" LastPageText="" NextPageImageUrl="~/images/arrowbtndown.png" NextPageText="" PreviousPageText="" ShowPreviousPageButton="False"/>
        </Fields>
 </asp:DataPager>

会有所不同,因为此输出可能会在点击时立即触发回发。如果您分享最终输出,它可能会有所帮助。

【讨论】:

最终输出:。不幸的是,你的 jQuery 也不起作用。 我的代码sn-p只是动画部分,需要在我提到的动画完成回调中手动禁用&lt;input/&gt;,然后手动触发postback函数。我不知道&lt;asp&gt; 按钮绑定了哪些javascript 事件。您需要了解更多关于该按钮对 JS 的作用。你可以通过$('.btndown input').click(function(e)e.preventDefault());来阻止它触发。 我需要回发我的 .btndown 名称属性,但我不知道如何在 __doPostBack(); 中执行此操作【参考方案2】:

编辑

最终解决方案如下:

<script type="text/javascript">
function pageLoad() 

    $('.btndown').click(function (e) 
        e.preventDefault();
        $('.imageset').animate(
          opacity: 0
          , 1000, function () 
                 __doPostBack($('.btndown input').attr('name'), '');
          );
    );
;
</script>

【讨论】:

以上是关于在jQuery中延迟/超时回发的方法?的主要内容,如果未能解决你的问题,请参考以下文章

重置会话超时而不在 ASP.Net 中进行回发

在异步回发的更新面板中禁用按钮

javascript jquery设置超时延迟

带有 ASP.NET 按钮回发的 jQuery UI 对话框

使用proxyquire和mocha在单元测试中模拟方法调用时如何模拟时间延迟(超时)?

ASP SqlDataSource 更新 - 用于部分页面回发的 AJAX?