6

FancyBox にフォームを含むファイルをロードさせようとしています。jQuery Validate プラグインを使用して検証したいのですが、コールバックが行われる前にフォームが DOM に追加されません。

afterLoad オプションはアラートを開きますが、実際には ajax コンテンツがロードされる前に開きます。

クリックすると validate() を実行するロード済みファイルに href を追加できますが、興味深いことに、同じページにそのクラスの別のフォームがあるため、クラスではなく 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

私は、コンテンツがロードされた後に DOM 操作を行いたいという同様の状況にありましたが、afterLoad機能しませんでした。代わりに使用する必要がありましたが、これはFancybox v1.3afterShowと非常によく似ているようです。onComplete

$.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 に答える