JQuery Modal窗口可防止.Net事件被触发

时间:2012-09-10 20:30:11

标签: jquery asp.net .net jquery-ui jquery-plugins

我正在使用一个带有asp按钮的Jquery模态窗口。这里的问题是jQuery-UI在元素之外创建对话框,因此单击它永远不会提交表单。我试图通过添加:

来解决这个问题
$(this).parent().appendTo(jQuery("form:first"));

但是,我是Jquery的新手,不知道在哪里添加这一行。我以为我接近任何帮助?谢谢!

jQuery(function ($) {
var OSX = {
    container: null,
    init: function () {
        $("input.osx, a.osx").click(function (e) {
            e.preventDefault();

            var dlg = $("#osx-modal-content").modal({
                overlayId: 'osx-overlay',
                containerId: 'osx-container',
                closeHTML: null,
                minHeight: 80,
                opacity: 65, 
                position: ['0',],
                overlayClose: true,
                onOpen: OSX.open,
                onClose: OSX.close
            });
        });
    },

    open: function (d) {
        var self = this;
        $(this).parent().appendTo(jQuery("form:first")); // <--APPENDING HERE
        self.container = d.container[0];
        d.overlay.fadeIn('fast', function () {
            $("#osx-modal-content", self.container).show();
            var title = $("#osx-modal-title", self.container);
            title.show();
            d.container.fadeIn('slow', function () {
                setTimeout(function () {
                    var h = $(document).height() - 25
                    d.container.animate(
                        {height: h}, 
                        300,
                        function () {
                            $("div.close", self.container).show();
                            $("#osx-modal-data", self.container).show();
                        }
                    );
                }, 200);
            });
        })
    },
    close: function (d) {
        var self = this;
        d.container.animate(
            {top:"-" + (d.container.height() + 20)},
            300,
            function () {
                self.close();
            }
        );
    }
};

OSX.init();

});

2 个答案:

答案 0 :(得分:0)

从表面看来,不要使用.dialog()

您可以使用以下样式创建对话框的效果

#mydialog{

    z-index:1000;
    position:absolute;
    top:100px;
    left:200px;

}

#overlay{

   z-index:999;
   background:transparent url(bg.png) repeat ...; 
}

请注意,您甚至可以使用$.blockUI()作为叠加效果。

$('#mydialog').draggable(); //.resizable() if you want to

答案 1 :(得分:0)

$(el).modal({appendTo:'form'});解决了这个问题 请参阅下面的确切用法。

jQuery(function ($) {
var OSX = {
    container: null,
    init: function () {
        $("input.osx, a.osx").click(function (e) {
            e.preventDefault();

            $("#osx-modal-content").modal({
                overlayId: 'osx-overlay',
                containerId: 'osx-container',
                closeHTML: null,
                minHeight: 80,
                opacity: 65, 
                position: ['0',],
                overlayClose: true,
                onOpen: OSX.open,
                onClose: OSX.close,
                appendTo: 'form' // <--This appends to the form
            });
        });
    },