2011-02-28 14 views
5

En mi página web y tengo algunos enlaces como:¿Cómo ejecutar la función después de abrir un cuadro de diálogo jQueryUI?

<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> 

Primero de todo, init mi caja de diálogo llamando:

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

continuación adjunto el cuadro de diálogo en el evento click:

$('.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'); 

    } 
} 

Como puede ver, el contenido del cuadro de diálogo se obtiene con ajax. El diálogo contiene alguna entrada. Tengo una última función que se supone que edita el contenido de la entrada, pero no sé cómo ni cómo llamarla. Se debe llamar después de la apertura del diálogo para que sea eficiente. Cómo puedo hacer eso ?

hacerlo juste después

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

no funcionará debido a la carga asíncrona (llamada antes de que el diálogo es completamente cargado).

Gracias por su ayuda.

Respuesta

25

Puede hacer algo cuando se abre el cuadro de diálogo.

initDialog : function() { 
    $('#dialogbox').dialog({ 
     bgiframe:true, 
     autoOpen:false, 
     open: function() { 
      // do something on load 
     }, 
     width:500, 
     modal:true 
    }); 
} 
+0

Gracias esto funcionó para mí ... – Ziggler

2

¿Puedes hacer algo como esto?

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

Se llamará a esta función cuando se complete la carga.

+3

Esto no es una respuesta. – tishma

+1

Esta es en realidad la respuesta correcta ... el corazón de la pregunta es que quiere esperar a que la carga se complete antes de ejecutar una función, para hacerlo, la devolución de la carga se debe usar como se muestra aquí. –

Cuestiones relacionadas