2010-02-14 3 views
0

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

+2

Thickbox становится довольно старым, и он больше не поддерживается. Используете ли вы его по своему выбору или вы вынуждены использовать его в старом приложении? Во всяком случае, не хотите ли вы обновить список «выбрать», когда возвращается представление формы? Как вы все равно отправляете форму? – Pointy

+0

Я использую его по выбору. если вы знаете какую-либо другую альтернативу, я открыт для предложений. – user253530

+0

На домашней странице толстой страницы перечислены альтернативы: http://jquery.com/demo/thickbox/ – Pointy

ответ

0

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

Например, этот код будет «угон» 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, а затем запустите свою функцию закрытия в успешной форме submit.

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

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

8

вы также можете «захватить» всю функцию tb_remove. Это означает, что вы не только зафиксируете ссылку, но и нажмите клавишу ESC.

Это связано с переименованием исходного метода удаления inline и заменой его собственным.

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

Примечание: убедитесь, что вы сделали это до того, как толстый бокс первым вызван для максимального успеха.

+0

Спасибо, ты спас мой день. Плохо, что пользователь не принял ваш ответ ... – Mathlight

+0

@mathlight рад слышать, что я помог кому-то даже это долго после :) – LucasS