Закрытие окна Jquery Dialog вручную - PullRequest
1 голос
/ 09 января 2012

Я пытаюсь вручную закрыть Jquery Dialog window при нажатии кнопки без использования команды $('#id').dialog('close').

Причина в том, что я выполняю ajax-вызов, когда диалоговое окно открыто, и поэтому .dialog больше не работает с ответом. Моя проблема в том, что мне удалось закрыть диалоговое окно вручную, удалив div для самого окна и наложения, но по какой-то причине фоновая форма все еще остается отключенной.

Даже если кажется, что все удалено, все равно невозможно нажимать на кнопки или поля формы, поэтому мне интересно, не упустил ли я какую-то часть. Кто-нибудь знает, что еще Jquery использует для отключения фона в модальном диалоговом окне?

Обновление Я попытался вернуть представление из HomeController, чтобы как-то обновить страницу после ручного удаления оверлея и окна. Однако страница по-прежнему отключена, и мне еще предстоит выяснить, почему.

Ответы [ 4 ]

1 голос
/ 14 июня 2012

Попробуйте это:

window.parent.jQuery('#ModalDialog').dialog('destroy');
1 голос
/ 10 января 2012

Судя по вашему описанию, похоже, что вызов ajax каким-то образом изменяет страницу, изменяя div, на котором основан диалог jQueryUI. После того, как вы вызвали метод dialog для div (или другого элемента), он фактически принадлежит jQueryUI, и вы не должны касаться его до тех пор, пока не вызовете .dialog("destroy"). Вы должны либо:

  1. Убедитесь, что div и разметка, которую jQueryUI добавляет вокруг него, не затрагиваются результатом вызова ajax или

  2. Просто до изменения div, вызовите $("#id).dialog("destroy");, а затем заново создайте диалог после того, как вызов ajax сделал свое дело.

0 голосов
/ 10 января 2012

Не уверен, как это не работает:

    $("#modal").dialog({
        autoOpen : false,
        modal : true
    });

    // to open
    $("#modal").dialog("open"); 

    // to close
    $("#modal").dialog("close");
0 голосов
/ 09 января 2012

Назначить функцию нажатия для кнопки

$("#button").click(function()
{
$("#id").dialog('close');
});

или

$( ".selector" ).bind( "dialogclose", function(event, ui) {
  ...
});

или, может быть, я не понимаю ваш вопрос:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...