Fancybox - ASP.NET按钮不起作用

nik*_*3ro 21 c# asp.net fancybox

我刚刚决定使用Firebug,当创建Fancybox窗口时,它实际上需要我的所有ASP.NET控件(包含在DIV标记中)并将它们放在FORM标记之外.所以我猜这就是为什么然后ASP.NET按钮不做任何事情 - 它被放置在窗体之外.

那么,除了使用完全不同的模态对话框之外,你有什么建议我可以阻止这个(或使ASP.NET按钮工作)吗?

编辑:好的,人们报告某些建议的修复程序在某些版本上适用于他们.所以,请务必阅读所有答案/滚动到底部,了解如何在不同的Fancybox版本上解决此问题.

der*_*rek 33

你需要改变它(在jquery.fancybox-1.3.1.js的第719行附近):

$('body').append(
    tmp         = $('<div id="fancybox-tmp"></div>'),
    loading     = $('<div id="fancybox-loading"><div></div></div>'),
    overlay     = $('<div id="fancybox-overlay"></div>'),
    wrap        = $('<div id="fancybox-wrap"></div>')
        );
Run Code Online (Sandbox Code Playgroud)

$('form').append(
    tmp         = $('<div id="fancybox-tmp"></div>'),
    loading     = $('<div id="fancybox-loading"><div></div></div>'),
    overlay     = $('<div id="fancybox-overlay"></div>'),
    wrap        = $('<div id="fancybox-wrap"></div>')
);
Run Code Online (Sandbox Code Playgroud)

  • -1编辑第三方源文件是不好的做法.对于版本2,请查看@ Myke-Black的答案,了解最佳方法. (2认同)

Myk*_*ack 19

对于任何需要使用Fancybox版本2来解决此问题的人来说,这是一种更简单的方法.您所要做的就是在代码中添加父:"form:first",例如

    $(document).ready(function () {
        $(".various").fancybox({
            parent: "form:first",
            fitToView: true,
            width: '300px',
            height: '100px',
            autoSize: false,
            closeClick: false,
            openEffect: 'none',
            closeEffect: 'none',
            modal: false
        });
    });
Run Code Online (Sandbox Code Playgroud)

然后,这会将fancybox元素附加到表单标记内的dom中,而不是在body标记内.


VRC*_*VRC 5

Fancybox版本2.1.4

改变这2行

2069线左右:

document.all && !document.querySelector ? $('html') : $('body');
Run Code Online (Sandbox Code Playgroud)

document.all && !document.querySelector ? $('html') : $('form:first');
Run Code Online (Sandbox Code Playgroud)


在1960线附近:

this.overlay = $('<div class="fancybox-overlay"></div>').appendTo('body');
Run Code Online (Sandbox Code Playgroud)

this.overlay = $('<div class="fancybox-overlay"></div>').prependTo('form');
Run Code Online (Sandbox Code Playgroud)

你也可以使用appendTo但这取决于你.在我的情况下,我需要prependTo.