【问题标题】:jQuery selectable causes full postback in ASP.NET Ajax applicationjQuery 可选导致 ASP.NET Ajax 应用程序中的完整回发
【发布时间】:2012-09-19 06:57:58
【问题描述】:

I want my selectable to work as an autopostback control, when something is selected the script clicks on a button and postback the values of the selectable.但它不能很好地与我的 ASP.NET Ajax 和 UpdatePanels 配合使用。有时会发生完整的回发,而不是部分回发。

我从调试中得出的结论是,当停止函数运行时,jQuery 在幕后做了一些事情。如果我添加警报以停止停止功能,则部分回发工作正常。

为了增加一些混乱,这适用于IE9Chrome,但不适用于IE7IE8。所以它也可能是特定于浏览器的。

jQuery版本为:v1.6.2

脚本:

<script language="javascript">
    $('.selectable').live("mouseover", function () {
        if (!$(this).data("selectable-init")) {
            $(this).data("selectable-init", true);

            $(this).selectable({
                filter: '.item',
                stop: function () {
                    $("#<% =btnPostback.ClientID %>").click();                        
                }
            });
        }
    });    
</script>

HTML:

<div class="selectable">
    <div class="item">1</div>
    <div class="item">2</div>
    <div class="item">3</div>
    <div class="item">4</div>
</div>

<asp:UpdatePanel runat="server">
    <ContentTemplate>
        <asp:Literal ID="litIsPostback" runat="server"></asp:Literal>
        <asp:Button ID="btnPostback" runat="server" OnClick="btnPostback_OnClick" />
    </ContentTemplate>
</asp:UpdatePanel>

后面的代码:

protected void btnPostback_OnClick(object sender, EventArgs e)
{
    litIsPostback.Text = ScriptManager.GetCurrent(this).IsInAsyncPostBack.ToString();
}

【问题讨论】:

    标签: javascript jquery asp.net asp.net-ajax


    【解决方案1】:

    这是我想出的最接近解决方案的方法。

            $('.selectable').selectable({
                filter: '.item',
                stop: function (event, ui) {
                    $('.ui-selectable-helper').remove();
    
                    setTimeout(function () {
                        $("#<% =btnPostback.ClientID %>").click();
                    }, 1);
                }
            });
    

    通过在回发之前删除助手(套索),我可以从上到下拖动,但我不能以其他方式进行。在 jQuery 中,帮助器在停止事件后被移除。

    我不确定为什么 setTimeout 有效,但它也解决了完整回发的问题。

    【讨论】:

      猜你喜欢
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-09
      • 2010-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多