【问题标题】:Postback after JQuery Dialog box closes causes js error in IEJQuery对话框关闭后的回发导致IE中的js错误
【发布时间】:2009-11-18 15:34:29
【问题描述】:

我正在创建 JQuery 对话框,并且需要关闭功能来回发到父表单(以便弹出表单中更改的数据立即显示在父屏幕上)。我已经编写了代码并且对话框就位。但是,有一个问题。在 IE 中,当我关闭弹出窗口并发生回发时,我收到此 javascript 错误,指出“对象不支持此属性或方法”,它指的是创建对话框的代码块。

只是一些背景:带有弹出窗口的页面是一个 aspx 页面,其中有许多显示可以更改的数据库信息的区域。此页面使用母版页。弹出窗口包含一个 iframe,我根据单击的按钮更改其来源。我希望对我们拥有的许多弹出表单使用相同的对话框和弹出 div。

这里是javascript。它位于 $(document).ready 部分:

//Source of IE error
$("#popup").dialog({
    bgiframe: true,
    resizable: false,
    height: 217,
    modal: true,
    autoOpen: false,
    close: function()
    {
        $('#aspnetForm').submit(); //Submit the parent form to cause postback
    }
});

$("#BHSubmitBtn").click(function()
{
    var splitChar = $("#ctl00_Main_splitCharacter");
    var queueId = $("#ctl00_Main_queueId");
    var siteName = $("#ctl00_Main_siteName");
    var queryString = "Add" + splitChar + siteName + splitChar + queueId;

    $("#popupFrame").attr('src', 'BusinessHoursSubForm.aspx?var1=' + queryString);
    $("#popup").dialog('open');
});

这是我弹出的 div:

<div id="popup" title="Business Hours" >
<iframe id="popupFrame" src=""></iframe>
</div>

这是打开表单的按钮:

<input class="clsSubmitBtn" id="BHSubmitBtn" type="button" value="Add" />

我尝试了许多不同的方法来处理这个问题,大多数都以 ui.dialog 开头的行中的 javascript 错误(上述错误)结束:

$.widget('ui.dialog', ...) 或我的 javascript。

谁能想到为什么会这样?我已经让它工作了(使用回发),但我不得不剥离除我正在处理的部分之外的所有页面,但我看不到任何会导致它的东西。

【问题讨论】:

    标签: jquery popup postback asp.net


    【解决方案1】:

    您可以使用 __doPostback('XYZ,''); 而不是编写 submit() 来提交表单以进行回发。导致回发发生。

    【讨论】:

      【解决方案2】:

      我认为您需要像这样访问父文档。

      $('#aspnetForm', window.parent.document).submit();
      

      【讨论】:

        【解决方案3】:

        问题在于 ASP.NET 生成的页面依赖于一些全局 javascript 值。这些值可能会被您正在注入的对话框覆盖。我对这个问题的解决方案是有一个对象在加载对话框之前保存当前状态,然后在完成后恢复它。

        要确定需要保存哪些值,您需要仔细查看作为对话框加载的页面。查看所有脚本标签。我发现值得保存/恢复的一些值是:“__doPostBack”、“theForm”、“WebForm_OnSubmit”、“Page_Validators”、“ValidatorOnSubmit”、“Page_ValidationActive”、“ValidatorOnChange”

        此列表将随着您在对话框中使用更多 ASP.NET 功能而增加。

        【讨论】:

          【解决方案4】:

          实际问题与表单的发回方式无关。问题(抱怨)是我们正在使用现在已弃用的 SmartNav 页面属性(我的部分任务是摆脱这个)并且由于某种原因它导致了错误(可能是因为 smartNav 在后台执行的操作)。一旦我从它工作的所有页面中删除它。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多