Thickbox поможет вызвать метод из родительского HTML при закрытии - PullRequest
0 голосов
/ 14 февраля 2010

Я использую Thickbox для загрузки HTML. Этот HTML имеет форму, которая мне нужна, чтобы добавить некоторые вещи в базу данных. У меня есть поле выбора в основной HTML (тот, с которого я загружаю Thickbox). Что я хочу сделать, так это то, что когда я нажимаю кнопку закрытия в Thickbox, поле выбора должно быть обновлено с помощью материала, который я только что добавил в базу данных. Я думал о том, чтобы изменить метод close для коробки с расширенными настройками и вызвать мой метод, который обновляет поле выбора, но при этом происходит сбой в работе системы. Любая подсказка будет принята с благодарностью.

Ответы [ 2 ]

8 голосов
/ 07 октября 2011

Вы также можете «похитить» всю функцию 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 голосов
/ 16 февраля 2010

Если вы проверяете Thickbox в действии с помощью Firebug, вы можете видеть, что модал Thickbox на самом деле является div внутри главной страницы. Вы можете просто вызывать любую функцию на главной странице из коробки.

Например, этот код будет «перехватывать» ссылку закрытия «box» и выполнять дополнительные действия:

$("#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);
        });
});

Помимо перехвата ссылки на толстый ящик, вы также можете поместить код в любую ссылку внутри толстого ящика. Просто убедитесь, что вы звоните tb_remove(), чтобы закрыть окно Thickbox, до или после вашего пользовательского кода. Если для этого требуется отправить форму, используйте jQuery plugins формы , чтобы отправить форму через AJAX, а затем запустите функцию закрытия при успешной отправке формы.

Об обновлении окна выбора смотрите мой ответ здесь о том, как сделать так, чтобы он работал в каждом браузере.

Чтобы убедиться, что ваша функция всегда вызывается, вы можете установить в параметре Thickbox режим modal, который отключит клавишу выхода. Не забудьте указать код закрытия, так как по умолчанию панель толстых ящиков не отображается.

...