2015-03-18 10 views
5

Das folgende Snippet ermöglicht es mir, in einer Callback-Funktion Sachen für die angeklickten Buttons auszuführen. Wie kann ich jedoch eine Callback-Funktion oder eine ähnliche Problemumgehung erhalten, sodass ich Code ausführen kann, wenn ein Benutzer auf die Schaltfläche "X" klickt/den Dialog ablehnt?Bootbox: Callback-Funktion nach dem Schließen des Dialogs/Klick auf die 'X'-Schaltfläche

bootbox.dialog({ 
     title: "Woah this acts like an alert", 
     message: "Cool info for you. You MUST click Ok.", 
     buttons: { 
      sucess:{ 
       label: "Ok", 
       callback: callback 
      } 
     }  
    }); 

    callback(){//stuff that happens when they click Ok.} 

Ich will nicht/Ausblenden der Schließen-Schaltfläche deaktivieren, mit

closeButton: false, 
+1

Haben Sie das Beispiel überprüfen [ihre Seite] (http://bootboxjs.com/)? Suche nach 'Prompt with default value' Oder du kannst' $ ("# myModal") verwenden. On ("hidden", function() {// mach etwas}); ' – anpsmn

+0

Hmm scheint nicht mit dem zu funktionieren benutzerdefinierter Dialog –

Antwort

10

Es gibt OnEscape-Funktion für r dies.

bootbox.dialog({ 
    message: 'the msg', 
    title: "Title", 
    onEscape: function() { 
     // you can do anything here you want when the user dismisses dialog 
    } 
}); 
+2

Dies wird nicht ausgelöst, wenn Sie auf das X klicken, nur wenn Sie die Taste 'esc' drücken. Die Antwort von anpsmn funktioniert für beide. –

6

Sie eine Variable verwenden können, wenn die modale überprüfen nach einem Klick auf OK oder x button/escape key versteckt war

var status = false; 

$('.btn').on('click', function() { 
    bootbox.dialog({ 
     title: "Woah this acts like an alert", 
     message: "Cool info for you. You MUST click Ok.", 
     buttons: { 
      sucess: { 
       label: "Ok", 
       callback: function() { 
        status = true; 
       } 
      } 
     }, 
     onEscape: function() { 
      $('.bootbox.modal').modal('hide'); 
     } 
    }); 
}); 

$(document).on("hidden.bs.modal", ".bootbox.modal", function (e) { 
    callback(); 
}); 


function callback() { 
    if (!status) { 
     onClose(); 
    } else { 
     onOK(); 
     status = false; 
    } 
} 

function onClose() { 
    $('p.alert span').removeClass().addClass('text-danger').text("Dismissed"); 
} 

function onOK() { 
    $('p.alert span').removeClass().addClass('text-success').text("Sucess"); 
} 

Fiddle demo

0

Einige Leute könnten dies als ein bisschen wie ein Hack-around sehen, aber passt mir gut wie alles, was ich war bestätigen wollte, dass jemand die Nachricht akzeptiert, die das nächste Ereignis ausgelöst hat.

Verwendung Bootbox.js 'confirm() Methode, die hat liefert eine callback Aktion, hinzugefügt, um eine zusätzliche Klasse die confirm Taste mit den hidden Klassennamen (den muss auf confirm() geliefert werden) (A bootstaper Hilfsklasse für display:none. So ist die Modal erscheint als normale Benachrichtigungsfeld.

bootbox.confirm({ 
     message: "Some Button Text", 
     buttons: { 
      "cancel": { 
       label: "<i class='fa fa-check'></i> OK - I understand", 
       className: "btn btn-primary" 
      }, 
      //Hide the required confirm button. 
      "confirm": { label: "", className: "hidden" } 
     }, 
     callback: function(){ 
      //Begin Callback 
      alert("Finished"); 
     } 
    }); 

JsFiddle Example

Verwandte Themen