2012-12-11 40 views
4

我想讓FancyBox加載包含表單的文件。我想使用jQuery Validate插件進行驗證,但是在回調之前沒有將表單添加到DOM中。FancyBox加載後的調用函數

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"> 

回答

8

嘗試使用ajax選項,其complete事件:

$(".fancy").fancybox({ 
    // ... 
    ajax: { 
     complete: function(jqXHR, textStatus) { 
      $(".validateMe").validate(); 
     } 
    } 
}); 
+0

謝謝,我沒有看到他們的文檔上的選項。它工作,我拿出了參數,它很好。 – Jazzy

+1

@Jason:你沒有看到它,因爲它是一個jQuery方法,而不是fancybox API選項。此外,您可以使用'afterShow'代替。 – JFK

+1

@JFK - 實際上,它只是一個fancybox API選項,只是將參數傳遞給相應的jQuery方法。這是記錄在他們的主頁http://fancyapps.com/fancybox/。 –

6

我是在一個相似的情況下,我想做以後一些DOM操作內容加載,但afterLoad沒有奏效。我不得不使用afterShow,這似乎與Fancybox v1.3中的onComplete非常相似。

$.fancybox({ 
      href: '/some/link/here', 
      type: 'ajax', 
      // Other options like size go here 
      afterShow: function() { 
       // Code to execute after the pop up shows 
      } 
     });