2009-11-14 7 views
9

Je suis nouveau sur javascript et jQuery. J'essaye d'implémenter une boîte de dialogue modale en utilisant des widgets d'interface utilisateur jQuery. La boîte de dialogue modale s'affiche correctement avec les boutons OK et Annuler, mais l'appel de la fonction de dialogue ('open') ne semble pas bloquer et attendre un clic OK ou Annuler. Par exemple, quand je lance le code suivantLe dialogue modal de l'interface utilisateur jQuery ne bloque pas

..... sur le bouton clique

okToDelete = false; //a global variable 
    $('deleteDialog').dialog('open'); //this does not block but returns immediately 
    alert(okToDelete == true ? "ok" : "false"); 

La zone d'alerte est affichée en premier et ALORS la boîte de dialogue modale apparaît! okToDelete est une variable globale que j'ai mise à false quand j'entre la fonction et la valeur true dans le rappel du bouton OK.

Voici ma fonction init dialogue

$("#deleteDialog").dialog({ 
     bgiframe: true, 
     autoOpen: false, 
     modal: true, 
     overlay: { 
      backgroundColor: '#000', 
      opacity: 0.5 
     }, 
     buttons: { 
      Cancel: function() { 
       $(this).dialog('close'); 

      }, 
      Ok: function() { 
       $(this).dialog('close'); 
       okToDelete = true; 
      } 
     } 
    }); 

Répondre

11

Il ne vise pas à 'bloc'. Si vous souhaitez afficher l'alerte (je suppose que c'est pour tester) ou appeler d'autres fonctions après la fermeture de la boîte de dialogue, si vous souhaitez le placer dans les fonctions callback ou ok, cancel.

Check this out:
http://docs.jquery.com/UI/Dialog#event-close

L'événement close des docs:
Cet événement est déclenché lorsque la boîte de dialogue est fermée.
Exemples de code

Fournissez une fonction de rappel pour gérer l'événement close comme une option init.

$('.selector').dialog({ 
    close: function(event, ui) { ... } 
}); 

Lier à l'événement de fermeture par type: dialogclose.

$('.selector').bind('dialogclose', function(event, ui) { 
    ... 
}); 
Questions connexes