Решение Nick Craver для меня сработало, однако оно не полностью работает для IE7.
В IE7 есть ошибка, которая не учитывает z-индекс для вложенных элементов; поэтому, если вы переместите родителя диалога в форму, наложение будет поверх диалога, не позволяя пользователю взаимодействовать с диалогом. Исправление для IE7 состоит в том, чтобы установить z-index оверлея равным -1, затем клонировать элемент overlay и добавить его в форму, как вы это делали для диалога. Затем в случае закрытия диалогового окна удалите клонированный оверлей.
Проблемы с наслоением Z-индекса IE7
В зависимости от макета вашего сайта, вы можете просто переместить оверлей, и вам не нужно его клонировать. Мне пришлось клонировать его, так как макет моего сайта имеет левую и правую границу, и мне нужно было наложение, чтобы покрыть всю область. Ниже приведен пример того, что я сделал:
var $dialog = $('#myDialog');
var $form = $dialog.parents('form:first');
$dialog.dialog({
autoOpen: false,
title: 'My Dialog',
minWidth: 450,
minHeight: 200,
modal: true,
position: ['center', 'center'],
close: function () {
// IE7 BUG: Needed to add an additional overload because of the z-index bug in IE7.
$('.ui-widget-overlay-ie7fix:first').remove();
},
buttons: dialogButtons
});
$form.prepend($dialog.parent());
$dialog.dialog('open');
if ($.browser.msie && $.browser.version.slice(0, 1) == "7") {
var $overlay = $('body .ui-widget-overlay:first');
$form.prepend($overlay.clone().addClass('ui-widget-overlay-ie7fix'));
$overlay.css('z-index', '-1');
}
Спасибо,
Garry