Подтвердить что ты не робот

Как настроить диалоговое окно jQueryUI динамически загружать контент

Мне нравятся диалоговые окна jQueryUI. Однако, как представляется, нет возможности динамически загружать встроенный контент. Думаю, для этого я должен использовать какой-то другой подход? Будет ли iframes загружать контент только тогда, когда они станут видимыми? Это правильный способ сделать это?

Я открыт для других механизмов диалогового окна, если они больше подходят для загрузки содержимого только при первом открытии.

4b9b3361

Ответ 1

Это не сложно сделать - я бы не стал возиться с iframes только для этого. Как насчет чего-то подобного?

$( ".selector" ).dialog({
   open: function(event, ui) {
     $('#divInDialog').load('test.html', function() {
       alert('Load was performed.');
     });
   }
});

В принципе, вы создаете свой диалог, и когда он открывается, файл html загружается с вашего сервера, заменяя содержимое вашего <div id="divInDialog"></div>, которое должно находиться внутри вашего диалога <div class="selector"/>.

Ответ 2

вы можете создать пустой div на своей странице

<div id="dialog-confirm"><div>

настройте диалог jquery ui с autoopen = false;

    $("#dialog-confirm").dialog({
        resizable: false,
        autoOpen: false,
        height:140,
        modal: true,
        buttons: {
          'Delete all items': function() {
            $(this).dialog('close');
          },
         Cancel: function() {
            $(this).dialog('close');
         }
       }
   });

тогда, когда вы хотите загрузить динамическую страницу, используйте вызов jQuery ajax для динамического размещения html в div, а затем вызовите диалог Открыть в этом div. ниже приведен пример загрузки динамической страницы при нажатии кнопки.

  $("#someButton").click(function()
  {
       $.post("Controller/GetPage", function(data){
            $('#dialog-confirm').html(data);
            $('#dialog-confirm').dialog('open');
       }, "html")};
  }

Кроме того, если для загрузки в ajax-вызове требуется некоторое время, вы можете использовать некоторое загрузочное изображение или jquery blockui для показать, что что-то загружается

Ответ 3

Я лично создаю "представление" для вашего диалогового окна, а затем расширяю его на созданное диалоговое окно. Для тестового примера я использовал следующий "вид":

var dialog = {
    title: 'Dialog WITHOUT Modal',
    modal: false,
    height: 300
};

Затем переходим к диалоговому окну:

$('#modal-btn-btns').click(function(){
    $('#dialog-modal-btns')
        .dialog($.extend(dialog, {
            modal: true,
            width: 500,
            title: "Dialog with modal AND buttons",
            buttons: {
                "Trigger ALERT": function(){alert("NICE [email protected][email protected]!")},
                "Cancel": function(){$(this).dialog('close');}
            }
        }))
        .html('This form has buttons!');
});