【问题标题】:jQuery UI dialog on ASP.NET page (inside user control)ASP.NET 页面上的 jQuery UI 对话框(在用户控件内)
【发布时间】:2010-05-25 20:38:36
【问题描述】:

我在这里有一个非常奇怪的行为:我在 jQuery UI 中创建了一个小弹出对话框,在我的测试 HTML 页面中,它完美地工作。当我点击按钮时,弹出窗口会出现,覆盖背景,并保持在屏幕上,直到我点击提供的两个按钮(确定或取消)之一。

所以现在我想将它添加到我的 ASP.NET 3.5 应用程序中。我想将它添加到用户控件 (ASCX) 内的 GridView,该控件位于母版页内的页面 (ASPX) 上。 在母版页上引用了 jQuery 1.4.2 和 jQuery UI 1.8.1 脚本:

<body>
<form id="XXXXXX" runat="server">
    <Ajax:ScriptManager ID="masterScriptManager" runat="server" ScriptMode="Auto">
        <Scripts>
            <asp:ScriptReference Path="~/Scripts/jquery-1.4.2.min.js" />
            <asp:ScriptReference Path="~/Scripts/jquery-ui-1.8.1.custom.min.js" />
        </Scripts>
    </Ajax:ScriptManager>

我不得不更改它以使用 Ajax 脚本管理器,因为将它们添加到 as 从来没有用过。

所以在我的 gridview 中,我有一列带有图像按钮,当用户点击这些按钮时,我正在调用一个小的 javascript 函数来显示 jQuery UI 对话框:

function showDialog()
{
    $("#dlg-discount").dialog('open');
    $("#txtAmount").focus();
}

当我在 MS IE 8 中运行此页面时,我得到一个单独的页面,在页面顶部,我得到了我的内容,以及正确的背景颜色和所有内容。在 Firefox 3.5.6 中,我确实将对话框作为弹出窗口。

在这两种情况下,对话框页面/弹出窗口会在一秒钟或更短的时间内再次消失 - 无需我点击任何内容!

它似乎类似于this question,但那里提供的解决方案不适用于我的情况。 This one here 似乎也很相似,但又一次:提出的解决方案似乎不适用于我的情况......

关于 h**** 在这里发生了什么的任何想法/提示/提示??

谢谢!

更新: 好的,一个问题已经解决了 - 无论出于何种原因,默认的 MS Ajax 似乎都在我的弹出对话框中添加了某种“观察者”,并在之后立即关闭它它出现了:-(

所以我将OnClientClick="showDialog();" 更改为OnClientClick="showDialog(); return false;" 并且不再发生这种情况 - 对话框会弹出并停留在那里,直到我单击两个按钮(OK 和 Cancel)中的任何一个。

【问题讨论】:

    标签: asp.net jquery-ui


    【解决方案1】:

    您在哪里创建对话框?应该有一些这样的代码在 DOM 准备好时被调用;

    $(document).ready(function(){
    
      var dialogOpts = {
        autoOpen: false,
        modal: true,
        width: 620,
        height: 660
      };
    
      $("#dlg-discount").dialog(dialogOpts);
    
    }
    

    然后你可以在你的 onclick 方法中调用$("#dlg-discount").dialog('open')。

    【讨论】:

    • 这正是我正在做的事情。在 FF 中,对话框出现得很好(现在),但在一秒钟左右后消失。在 IE 8 中,我得到一个单独的页面 - 真的很奇怪.....
    • 你的设置听起来和我们的几乎一样,除了我们使用 asp:ScriptManagerProxy 来加载 js 文件而不是 Ajax 文件并调用 jQuery.noConflict() 来释放对 $ 的引用并使用 jQuery 对象反而。我们在页面上也确实有一些 MS Ajax 控件,它们应该加载与您相同的 js。也许他们没有它有问题?见 api.jquery.com/jQuery.noConflict/
    • 感谢您的 cmets,戴夫!在这些和摆弄 CSS、删除 MS Ajax 依赖以及一些玩弄之间,我终于让它按预期工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-29
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    相关资源
    最近更新 更多