2015-03-18 18 views
5

Il seguente frammento consente di eseguire operazioni in una funzione di richiamata per i pulsanti su cui si fa clic. Tuttavia, come posso ottenere una funzione di callback o una soluzione simile in modo tale da poter eseguire del codice quando un utente fa clic sul pulsante "X"/chiude la finestra di dialogo?Bootbox: funzione di richiamata dopo aver chiuso la finestra di dialogo/fare clic sul pulsante "X"

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.} 

Non voglio disabilitare/nascondere il pulsante di chiusura con

closeButton: false, 
+1

fatto controllare voi l'esempio a [la loro pagina] (http://bootboxjs.com/)? Cerca 'Prompt con valore predefinito' oppure puoi usare '$ (" # myModal "). On (" hidden ", function() {// fai qualcosa});' – anpsmn

+0

Hmm non sembra funzionare insieme al finestra di dialogo personalizzata –

risposta

10

C'è la funzione onEscape per questo

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

Questo non si attiva quando si fa clic sulla X, solo quando si preme il tasto 'esc'. la risposta di anpsmn funziona per entrambi. –

6

È possibile utilizzare una variabile per verificare se il modale era nascosto dopo un clic su OK o x button/escape key

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

Alcune persone potrebbero vedere questo come un po 'di hack-around, ma si adatta bene come me tutto quello che volevo riconoscere è che qualcuno ha accettato il messaggio, che ha attivato l'evento successivo.

Uso Bootbox.js 'confirm() metodo che fa forniscono un'azione callback, aggiunge un'ulteriore classe al pulsante confirm (che deve essere forniti su confirm()) con il hidden nomeclasse (Una classe bootstaper helper per display:none. Così la modale appare come una normale finestra di avviso.

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