JQuery: Confirm – Dialoge mit dem JQuery UI Plugin erstellen
Mit dem JQuery UI Plugin lassen sich u.a. beeindruckende Dialogboxen erzeugen und dynamisch gestalten. So lässt sich z.B. der Titel der Dialogbox individuell gestalten, genauso wie der Text, der innerhalb der Box oder die einzelnen Buttons der Box. Ebenfalls können beliebig viele Buttons für die Dialog-Box erstellt werden und mit unterschiedlichen Bezeichnungen und Funktionen versehen werden.
Allerdings sind mit dem Dialog Modul des UI-Plugins keine Confirm-Dialoge im klassischen Sinne möglich. Es kann zwar ein Dialog erstellt werden, der wie eine Confirm()-Meldung die über das standardmäßige Javascript aufgerufen werden kann. Um solch ein Verhalten zu erzeugen, ist ein wenig Trickserei notwendig.
Dazu muss die Dialogbox aus einem Formular bestehen. Für die Dialogbox werden zwei Buttons angelegt, im Sinne von “OK” und “Abbrechen”. Der Button “Abbrechen” wird lediglich mit der Funktion belegt, die Dialogbox zu schließen. Der Button “OK” bekommt die Funktion zugewiesen, das in der Dialog-Box befindliche Formular abzuschicken. Soweit die Kurzbeschreibung, nun folgt die etwas ausführliche Beschreibung.
Zu erst schauen wir uns die Dialogbox mit deren Inhalt an:
Das besondere an der Dialog-Box ist, dass es ein verstecktes Formular enthält mit dem alle notwendigen Parameter übertragen werden, für den Fall, dass der “OK”-Button geklickt wurde. Nun zum JQuery-Snippet, dass die Dialog-Box initialisiert.
$(document).ready(function() {
$("#dialog").dialog({
bgiframe: true,
autoOpen: false,
height: 300,
modal: true,
buttons: {
OK: function() {
$("#dialog > form").submit();
$(this).dialog('close');
},
Abbrechen: function() {
$(this).dialog('close');
}
}
});
$('#benutzerDel').click(function() {
$('#dialog').dialog('open');
});
});
Die Zeilen 3-6 übergeben dem Plugin einige Parameter, wie die Dialog-Box dargestellt werden soll. In den Zeilen 7-15 wird es schon interessanter, hier werden die Buttons für die Dialog-Box und die dazugehörigen Funktionen eingerichtet. In diesem Beispiel werden zwei Button erstellt, einmal der Button “OK” und der Button “Abbrechen”. Der erste Button bekommt in Zeile 9 die Funktion zugewiesen, dass bei Klicken des “OK”-Buttons das im Dialog liegende Formular abgeschickt wird.
Das gleiche passiert in der Zeile 13, dort wird dem “Abbrechen”-Button die Funktion zum Schließen der Dialog-Box zugewiesen. Sollte also der “Abbrechen”-Button geklickt werden, passiert nichts weiter, außer dass die Dialog-Box geschlossen wird. In den Zeilen 16 – 18 wird der eigentliche Aufruf des Dialogs initialisiert. Sobald das Element mit der ID “#dialog” geklickt wurde öffnet sich die Dialog-Box, die in den vorherigen Zeilen initialisiert wurde.
Zum Abschluss fehlt noch das Element zum Aufrufen des Dialogs:
Hier gehts zur Demo.
weiterführende Links:
JQuery UI Homepage
JQuery UI Demo
Irgendwie nervt mich dieses JQUERY gerade etwas an,
das ist noch schlimmer als JavaScript pur,
eine variable der eine function ohne namen zugewiesen wird ist schon schlimm
aber die enteties im bezeichner von irgendwas das ist die härte…
$(“#dialog > form”).submit();
Hallo,
eigentlich ist das Prinzip von JQuery wirklich sehr sehr einfach, wenn man einmal durchgestiegen ist, wie es funktioniert. Es erleeichtert einem die Entwicklung von Javascript-Code wirklich sehr…wenn du möchtest, kann ich dir mal ein paar JQuery-Tutorials zu schicken?!
IM IE läuft das bei mir leider nicht…passiert einfach nix,.
hm sorry für den voreiligen Post…da habe ich wohl einen fehler gemacht…
Ich habe nun das Problem, dass ich im IE 2 Formulare habe und der Dialog dann nicht mehr startet. Wie kann man das ändern?
Hey Gabriel,
tritt bei dir immer noch das Problem auf? Ich kann es leider bei mir im IE6 nicht nachvollziehen. Bei mir öffnet sich die Dialog-Box korrekt.
Sorry. kannst Du das wieder löschen? Wohin mit dem Code :-/
Habe es gelöscht
Du kannst mir dein Problem gerne einmal in einer E-Mail schreiben.
http://www.mara-events.de/jqdialog.html
Da habe ich es mal hingepackt. Der STORNO Btn läuft nicht im IE.
Leider funktioniert dies nicht mit dem Internetexplorer. Lösche ich den Code (den Teil mit den Dialogen) läuft alles.
Hey Beavis,
vllt würdest du einmal den Code posten oder mir per E-Mail schicken?
Auf jeden Fall solltest du kontrollieren, dass vor keiner schließenden, geschweiften Klammer “}” ein Komma steht.
Hi,
ich habe zwar vorhin eine Email geschrieben, aber das ist ein Fehler der sich durch Faulheit einschleicht (Eclipse nach ,} suchen lassen, was nichts bei einem Zeilenumbruch findet).
Nun Funktioniert es, war das Komma vor der schließenden Klammer.
Danke
Hey…
habe deinen Kommentar leider erst später gesehen, habe deine Mail schon beantwortet. Viel Spaß und Erfolg noch mit deiner Anwendung.
Gruß
das ist alles schön und gut.
aber ich breche mir einen ab wenn ich versuche dem OK Button einen namen mit zu geben!
mit append gings nicht.
Wie kann man z.b. einem
button:{
“OK”: function(){
$(this).append(‘name=”blah”‘) } // ging nicht
}
aucht mit .attr(‘name’,'blah’) gings nicht
wie kann man das machen?
Ich brauche einen Namen damit im im PHP darauf reagieren kann.
eine Antwort währe Super!!
lg tobi
hey Tobi,
so ganz verstehe ich noch nicht, warum du da unbedingt einen Namen brauchst?
Vielleicht magst du ja mal dein Problem etwas genauer beschreiben und/oder du schickst mir per Mail mal deinen Quellcode?!
Viele Grüße,
Dennis
Hallo,
kann man diese Variante irgendwie ein bisschen abwandeln, indem man die Div-Box außerhalb des Form-tag schreibt.
Ich habe ein Formular das etwas größer ist und will nur bei klicken auf Senden den Dialog aufrufen, um noch einen Eintrag zu machen.
Sprich:
Speichern
Sicherheitscode: xxx
Bitte geben Sie xxx ein:
Und erst wenn in dem Dialog etwa eingetragen wurde, dann soll das Formular auch abgeschickt werden.
Ich wusste nicht, dass hier HTML Code eleminiert wird…also Speichern soll im Formular als Button sein und der Sicherheitscode im Div außerhalb des Formulars.
Hey Felix,
das geht natürlich auch. Du kannst dein DIV mit dem Sicherheitscode auch außerhalb des FORMs einbauen. Du müsstest dann beim Klicken des Submit-Buttons den Dialog aufrufen und beim Klicken auf “Speichern” im Dialog den Wert in dem CAPTCHA-Input dem Formular anhängen. Das kannste zB durch ein hidden-INPUT. Anschließend musst du nur noch das Formular abschicken.
Viele Grüße,
Dennis
Wenn sich jemand das Pseudon. Webdevelopper gibt und sich über Verbesserungen in javascript und jquery aufregt, nur weil er keine Peilung von Scopes, Namespaces, anonyme Funktionen, prototypbasierte OOP, etc. hat, dann ist das sehr schlimm. Hallo Webdevelopper, das worüber du dich beschwert hast ist Unfug, das selektieren der Knoten im Html-Baum ist sehr der Syntax von html und css angepasst, somit ist die Lehrnkurve kleiner, das mit der Variable ist einfach ‘ne Möglichkeit Private-Funktionen ohne Keywords zu realisieren und jquery kann nie schlimmer sein als das Lowlevel-Javascript, denn es hebelt alle Browser-Unkompitabilitäten aus. Du musst erst mal ein wenig Programmieren lernen, dann wirst du es einfacher mit Skripten haben, mein Vorschlag für dich.