Как выполнить функцию после открытия диалога jQueryUI? - PullRequest
7 голосов
/ 28 февраля 2011

На моей веб-странице есть несколько ссылок, таких как:

<div id="toolbarButtons">
    <a href="actualites/addLink" id="liens" rel="lien" title="Insérer un lien" class="toolbarButton"><span><img src="pub/struct/picto/icon_toolbar-link.gif" alt="Liens" />Lien</span></a>
    <a href="actualites/addImage" rel="image" title="Insérer une image" id="img" class="toolbarButton"><span><img src="pub/struct/picto/icon_toolbar-img.gif" alt="Liens" /> Image(s)</span></a>
</div>
<div id="dialogbox"></div>

Прежде всего, я запускаю диалоговое окно по телефону:

initDialog : function() {
    $('#dialogbox').dialog({
        bgiframe:true,
        autoOpen:false,
        width:500,
        modal:true
    });
}

тогда я прикрепляю диалог к ​​событию клика:

$('.toolbarButton').click(function(e){
            e.preventDefault();
            actu.dialogManager($(this));
});

dialogManager : function(elem) {

    elem.blur();
    var title   = elem.attr('title');
    var href    = elem.attr('href');
    var rel     = elem.attr('rel');

    $('#dialogbox').dialog('option','title',title);

    if(rel == 'lien')
    {
         $('#dialogbox').dialog('option','buttons',{
            'Add' : function(){
                            //TODO
            },
            'Cancel' : function(){
                $('#linkText').val('');
                $('#linkUrl').val('');
                $(this).dialog('close');
            }
        });

        $('#dialogbox').load(href).dialog('open');

    }
}

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

делает это только после

$('#dialogbox').load(href).dialog('open');

не будет работать из-за асинхронной загрузки (вызывается до полной загрузки диалога).

Спасибо за вашу помощь.

Ответы [ 2 ]

26 голосов
/ 07 марта 2012

Вы можете сделать что-нибудь, когда диалоговое окно открыто.

initDialog : function() {
  $('#dialogbox').dialog({
      bgiframe:true,
      autoOpen:false,
      open: function() {
          // do something on load
       },
      width:500,
      modal:true
  });
}
2 голосов
/ 28 февраля 2011

Можете ли вы сделать что-то подобное?

$('#dialogbox').load(href, function() {
   //your edit function?
   $(this).dialog('open');
   });

Эта функция будет вызываться после завершения загрузки.

...