6

我试图让 FancyBox 加载一个包含表单的文件。我想使用 jQuery Validate 插件进行验证,但是在进行回调之前表单没有被添加到 DOM 中。

afterLoad 选项确实会打开一个警报,但它实际上是在加载 ajax 内容之前打开的。

我可以在加载的文件中添加一个 href,单击该文件会运行 validate(),但有趣的是,它仅在我按 ID 而不是类调用表单时才有效,因为在同一个页面上有另一个表单与该类。

我有以下代码:

<a href="/url" class="fancy fancybox.ajax">link</a></li> 



$(".fancy").fancybox({
    maxWidth    : 800,
    maxHeight   : 600,
    fitToView   : false,
    width       : '70%',
    height      : '70%',
    autoSize    : false,
    closeClick  : false,
    openEffect  : 'none',
    closeEffect : 'none',
    afterLoad: function() {
      //$(".validateMe").validate();
      alert(987987);
    }
});


<form id="someId" action="javascript:someFunction();" class="validateMe" method="post">
4

2 回答 2

9

尝试将ajax选项与它的complete事件一起使用:

$(".fancy").fancybox({
    // ...
    ajax: {
        complete: function(jqXHR, textStatus) {
            $(".validateMe").validate();
        }
    }
});
于 2012-12-11T19:00:49.230 回答
6

I was in a similar situation where I wanted to do some DOM manipulation after the content loaded, but afterLoad did not work. I had to use afterShow instead, which seems to be very similar to onComplete from Fancybox v1.3.

$.fancybox({
            href: '/some/link/here',
            type: 'ajax',
            // Other options like size go here
            afterShow: function() {
                // Code to execute after the pop up shows
            }
        });
于 2016-04-04T17:42:20.887 回答