Normalement pour faire un dialogue c'est très simple:
1: <div id="MyDialog">
2: <h2>Bravo!</h2>
3: <p>Vous avez affiché une boite de dialogue avec succès</p>
4: </div>
5: <script type="text/javascript">6: $(document).ready(function(){7: $("#MyDialog").dialog();8: });
9:</script>
Maintenant, ajoutons un lien pour faire apparaitre le dialogue sur demande seulement.
1: <div id="MyDialog">2: <h2>Bravo!</h2>
3: <p>Vous avez affiché une boite de dialogue avec succès</p>
4: </div>
5: <a href="#" onclick="ShowMyDialog()">Open the dialog</a>
6:
7: <script type="text/javascript">8: fonction ShowMyDialog(){
9: $("#MyDialog").dialog("open");10: }
11:</script>
Ensuite comme le contenu doit être chargé dynamiquement modifions le div pour en faire un simple conteneur vide qui recevra le contenu du dialogue.
1: <a href="#" onclick="ShowMyDialog()">Open as dialog</a>2: <div id="MyDialog"></div>
3: <script type="text/javascript">2: $(document).ready(function(){3: $("#MyDialog").dialog({4: title: "Message",5: modal: true,6: autoOpen: false,7: open: function() {8: $("#MyDialog").load("ExternalPage.htm");9: }
10: });
11: });
12: function ShowMyDialog(){13: $("#MyDialog").dialog("open");14: }
10:</script>
Avec un override de la fonction open du dialogue j'utilise $.load pour charger une page externe. Et voilà...
Mais on pourrait faire un peu mieux. Si par exemple le fichier externe n'est pas diponible, que ca passe t-il? $.load permet d'attacher une fonction callback, mais les erreurs ne sont pas gérés. Alors, grace à la fonctionnalité de JQuery j'ai pu chainner $.ajaxError, qui permet comme sont nom l'indique de géré les erreurs ajax.
1: <a href="#" onclick="ShowMyDialog()">Open as dialog</a>
2: <div id="MyDialog"></div>
3: <script type="text/javascript">5: $(document).ready(function(){6: $("#MyDialog").dialog({7: title: "Message",8: modal: true,9: autoOpen: false,10: open: function() {11: $("#MyDialog").load("ExternalPage.htm");12: }
13: }).ajaxError(function(event, request, settings, exception) {14: alert("Error in: " + settings.url + " \n" + "error:\n" + exception);15: });16: });
17: function ShowMyDialog(){18: $("#MyDialog").dialog("open");19: }
20:</script>
Si vous avez des questions ou commentaires n’hésitez pas!