Как обновить диалоговое окно jQuery после ответа ajax - PullRequest
0 голосов
/ 30 марта 2010

Я бы хотел обновить диалоговое окно jQuery после получения ответа ajax.

Вот мое определение

  var $dialog = jQuery('<div>Wait</div>') .html('Sending your message...<img src="../images/AjaxWait.gif" style="float: left; padding-left: 50px;"/>')
.dialog({      
  modal: true,
  width: 160,
  autoOpen: false,
  resizable: false,
  draggable: false,
});

$dialog.siblings(".ui-dialog-titlebar").hide(); 

и перед отправкой ajax:

$dialog.dialog('open').dialog('option', 'height', 50);

И после получения ответа ajax я пытаюсь выполнить следующее:

jQuery('.ui-dialog-content').dialog('option', 'buttons', 
                            { "Ok": function() { jQuery(this).dialog('close'); } } );

.... но ничего не происходит ...... есть идеи?

1 Ответ

0 голосов
/ 07 декабря 2010

Я думаю, что вы не можете изменить существующее диалоговое окно таким образом. Чтобы выполнить задачу, с которой вы столкнулись, просто включите кнопку в первый вызов, но сразу же скройте ее. Как только запрос ajax закончится, просто раскройте кнопку. Для правильного визуального восприятия просто используйте скрыть / показать всю панель кнопок:

var $dialog = jQuery('<div>Wait</div>') .html('Sending your message...<img src="../images/AjaxWait.gif" style="float: left; padding-left: 50px;"/>')
  .dialog({      
    modal: true,
    width: 160,
    autoOpen: false,
    resizable: false,
    draggable: false,
    buttons: { "Ok": function() { jQuery(this).dialog('close'); }
  })
;

// hide buttons
$dialog.children('.ui-dialog-buttonpane').hide();

В обработчике события для завершения ajax просто выполните

// unhide buttons
$dialog.children('.ui-dialog-buttonpane').show();

При желании вы можете предоставить смягчающий идентификатор для анимации процесса отображения.

...