2010-02-14 45 views
0

我使用thickbox加載html。這個html有一個表格,我需要添加一些東西到數據庫中。我在主html(我加載thickbox的那個)中有一個選擇框。 我想要做的是當我按下thickbox中的關閉按鈕,選擇框必須更新與我剛剛添加到數據庫中的東西。我正在考慮修改thickbox close方法,並調用我的方法來更新選擇框,但當我這樣做時,thickbox崩潰。任何提示將不勝感激。thickbox幫助從父級html調用方法關閉

+2

Thickbox越來越老了,它不再被維護。你是選擇使用它還是你被迫在舊應用程序中使用它?無論如何,你不想在表單提交返回時更新「選擇」列表嗎?你如何提交表格呢? – Pointy 2010-02-14 18:29:33

+0

我正在使用它的選擇。如果你知道任何其他選擇,我願意接受建議。 – user253530 2010-02-14 18:30:31

+0

thickbox主頁列出了替代方案:http://jquery.com/demo/thickbox/ – Pointy 2010-02-14 18:31:07

回答

0

如果使用Firebug檢查thickbox的行爲,可以看到thickbox模式實際上是主頁面內的div。你可以在thickbox的主頁面調用任何函數。

例如,這段代碼將「劫持」的ThickBox的密切聯繫,並做一些額外的東西:

$("#TB_closeWindowButton").click(function(){ 
    tb_remove(); 
    //do extra stuffs, such as get a new select 
    var select_parent = $('#theselect').parent(); 
    $.get('new_select.php', 
     {}, 
     function(data){ 
      select_parent.html(data); 
     }); 
}); 

除了劫持ThickBox的密切聯繫,也可以把代碼放到裏面ThickBox的任何鏈接。只要確保您在定製代碼之前或之後致電tb_remove()以關閉厚盒子窗口。如果涉及提交表單,請使用jQuery form plugins通過AJAX提交表單,然後在成功的表單提交中運行關閉功能。

關於更新選擇框,請參閱我的回答here,瞭解如何使其在每個瀏覽器中運行。

要確保始終調用您的函數,可以將thickbox設置爲使用modal模式,該模式將禁用轉義鍵。請記住放置結束代碼,因爲默認情況下,thickbox欄不會顯示。

8

你也可以'劫持'整個tb_remove函數。 這意味着你不僅要捕獲鏈接點擊,還要按ESC鍵。

這涉及重命名內聯原始刪除方法並用您自己的替換方法。

<script type="text/javascript"> 
     var original_tb_remove = tb_remove; 
     tb_remove = function() { 
        **** insert your coolness here **** 
        original_tb_remove(); 
        return false; } 
    </script> 

注意:確保在thickbox第一次被調用以獲得最大成功之前這樣做。

+0

謝謝,你已經救了我的一天。爲了不好的用戶不接受你的回答... – Mathlight 2014-08-05 13:38:39

+0

@mathlight很高興聽到我幫了別人這麼久之後:) – LucasS 2014-08-07 11:01:01