jQuery jConfirm: Anderer Text für die Buttons

Autor: Frank

Eigentlich ist das “jConfirm” (aus dem jQuery UI) dafür gedacht, Bestätigungen vom User einzuholen. Z. B. “Ihr Auftrag wird nun an uns übermittelt”. Der User kann nun auf OK klicken, oder eben abbrechen.

Aber sicher bin ich nicht der einzige, der nun das konkrete Bedürfnis hatte, die Label der Buttons anzupassen. In meinem Falle ging es um eine explizite Frage: “Möchten Sie ….” => “JA”/”NEIN”. Für alle, die vor dem gleichen Problem stehen, hier schnell meine Lösung:

function jaNeinFrage() {
  var okCache = $.alerts.okButton;
  var cancelCache = $.alerts.cancelButton;
  $.alerts.okButton = 'Ja';
  $.alerts.cancelButton = 'Nein';

  jConfirm('Ja oder nein?', 'Entscheiden Sie ...', function(r) {
    if(r) {
      // Ja-Aktionen hier
    } else {
      // Nein-Aktionen hier
    }
  });

  $.alerts.okButton = okCache;
  $.alerts.cancelButton = cancelCache;

}

Was passiert hier? Zuerst schreiben wir die Standardbezeichnungen in einen Zwischenspeicher. Im Anschluss überschreiben wir die Werte für “OK” und “Abbrechen” (Variablen $.alerts.okButton und $.alerts.cancelButton) mit “Ja” und “Nein”. Dann blenden wir den jConfirm-Dialog ein und füttern diesen mit unseren Aktionen, die bei “Ja” oder “Nein” durchzuführen sind. Entgegen dem Standarddialog “window.confirm” (Javascript gibt es auch OHNE jQuery ;-) ) wird nämlich kein boolean zurückgegeben, sondern die callback-Funktion mit einem boolean-Parameter aufgerufen.
Anschließend schreiben wir die gecachten Variablen wieder zurück.

Wer ausschließlich “Ja”/”Nein” benötigt, könnte auch direkt in der Datei jquery.alerts.js die Bezeichnungen für die Buttons abändern. In meinem Falle möchte ich aber nur in einem speziellen Fall die “Ja”/”Nein” Variante verwenden. Andernfalls benötige ich “OK” und “Abbrechen”. Vielleicht – so fällt mir gerade ein – sollte man trotz der Tatsache, dass man ausschließlich “Ja” und “Nein” braucht, dennoch meine o. g. Variante verwenden – somit kann man jederzeit ein Update der jQuery UI Komponenten einspielen, ohne Änderungen zu überschreiben …. :-)

Abgelegt in: PHP-Codeschnipsel Kommentare(0) März 2011