1

使用 jQuery 模式对话框。

我有一个链接,点击它我必须在模式中加载一个页面。这个页面有一些特定于页面的 javascript,并且也有相同的名称,在许多控件的父页面中使用的 id。

决定使用 iFrame 以模态加载页面以避免 id 冲突。

父.html

<h3>
 Modal Inside Modal Sample</h3>

 <a href="javascript:void(0);" id="lnkPopup">Open Main Modal</a>
    <br />
    <input id="txt-first-name" name="FirstName" type="text" value="" />
    <br />
    <input id="txt-last-name" name="LastName" type="text" value="" />

这是javascript代码

$(document).ready(function () {

            $('#lnkPopup').click(function (e) {
                e.preventDefault();
                openModalPopup();
            });
        });

        var myModalDialog;

        function openModalPopup() {
            myModalDialog = null;


            var pageUrl = 'popup.html';
            var dialogFrame = $('<iframe src="' + pageUrl + '" frameborder="0" scrolling="no"></iframe>');

            myModalDialog = dialogFrame.dialog({
                modal: true,

                resizable: false,

                draggable: false,

                autoOpen: true,

                position: "fixed",

                closeOnEscape: true,

                height: 500,

                width: 764,

                open: function () {
                    var scrollPosition = [self.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft, self.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop];
                    var html = jQuery('html'); // it would make more sense to apply this to body, but IE7 won't have that       
                    html.data('scroll-position', scrollPosition);
                    html.data('previous-overflow', html.css('overflow'));
                    html.css('overflow', 'hidden');
                    window.scrollTo(scrollPosition[0], scrollPosition[1]);
                    dialogFrame.css('width', '700px');
                    dialogFrame.css('overflow-y', 'hidden');
                },
                close: function () {
                    var html = jQuery('html');
                    var scrollPosition = html.data('scroll-position');
                    html.css('overflow', html.data('previous-overflow'));
                    window.scrollTo(scrollPosition[0], scrollPosition[1]);
                    $(this).dialog('destroy').remove();

                }
            }).dialog('open');

            return false;
        }

注意:最重要的是弹出页面也有链接,并在我们单击时以模式打开。在模态中打开一个模态,两个模态 url 是相同的。

POPUP(popup.html) 和 Parent(parent.html) 页面都包含相同的 HTML/JS 内容

问题是对齐问题。它没有很好地定位。我试图解决我的问题,但我不知道创建两个 html 文件并链接它们。尝试过的FIDDLE版本

在此处输入图像描述

请帮我解决这个模态对齐问题。每个模态应该精确地定位在我们打开的其他模态之上。

4

1 回答 1

0

You have to create a function in the main window for opening these dialogs. Then every links in your dialogs should call that function (from main window) with calling window.parent.your_function_name().

于 2013-08-14T16:40:59.657 回答