2014-04-21 8 views
12

Ich kann das Show-Ereignis für den bootbox.confirm-Dialog nicht abfangen, um einige CSS-Anpassungen an dem Dialog vorzunehmen, bevor er angezeigt wird.Bootbox verwenden Das Show-Ereignis wird nicht ausgelöst

habe ich versucht, Dinge wie die Anhänger aber war nicht erfolgreich:

$(document).on("show.bs.modal", function (event) {...}); 
$(document).on("show", function (event) {...}); 
$(document).on("show", ".bootbox", function (event) {...}); 

Antwort

1

Ich möchte auch eine globale Funktion verwenden möchten:

function bootbox_confirm(msg, callback_success, callback_cancel) { 
    var d = bootbox.confirm({message:msg, show:false, callback:function(result) { 
     if (result) 
      callback_success(); 
     else if(typeof(callback_cancel) == 'function') 
      callback_cancel(); 
    }}); 

    d.on("show.bs.modal", function() { 
     //css afjustment for confirm dialogs 
     alert("before show"); 
    }); 
    return d; 
} 

und es auf diese Weise nennen:

bootbox_confirm("my message", function(){alert('ok')}, function(){alert('cancel')}).modal('show'); 

oder wenn keine Logik für Abbrechen:

bootbox_confirm("my message", function(){alert('ok')}).modal('show'); 
+1

Ich wünschte, die Leute würden kommentieren, warum sie denken, dass eine Antwort schlecht ist, anstatt nur zu verwerfen, besonders wenn die Antwort akzeptiert wird (was bedeutet, dass sie für den Fragesteller funktioniert hat). –

+0

@AustinSchmidt Ich würde denken, dass es ist, weil er nie spezifiziert hat, dass die Antwort in einer globalen Funktion sein musste. Er nahm die Antwort, die funktionierte, und wandte sie später auf seine eigene Antwort an und markierte sie dann als richtig. Es interessiert mich nicht wirklich persönlich (ich habe die höchste Antwort geschrieben), aber ich kann sehen, wie andere damit umgehen könnten. – codephobia

2

Sie so tun können:

var dialog = bootbox.dialog("foo", [], {show: false}); 

dialog.on("shown", function() { 
// 
}); 

dialog.modal("show"); 
+1

Didn Ich arbeite nicht, aber "showed.bs.modal" tat – AXMIM

36

Dieses 3 für Sie mit Bootbox 4.xx und Bootstrap funktionieren sollte. xx:

var box = bootbox.dialog({ 
    message: '', 
    title: '', 
    buttons: {}, 
    show: false 
}); 

box.on("shown.bs.modal", function() { 
    alert('it worked!'); 
}); 

box.modal('show'); 

oder wie folgt aus:

$(document).on("shown.bs.modal", function (event) {...}); 
+2

Ich bin nicht sicher, warum die aktuelle "richtige" Antwort gewählt wird. Diese ** showed.bs.modal ** funktionierte für mich - während die ** show.bs.modal ** nicht –

+3

Ich fand, dass das Ereignis show.bs.modal nicht funktioniert, wenn Sie nicht 'show' eingestellt haben 'Option im Dialogfeld, oder setzen Sie es auf wahr. Der Dialog wird dann automatisch angezeigt, daher wird der Even nicht ausgelöst. Wenn Sie die show-Option wie in diesem Beispiel auf false setzen und das Modal manuell mit 'box.modal ('show')' anzeigen, wird auch das Ereignis show.bs.modal ausgelöst. – rolandow

+0

Dies sollte die richtige Antwort sein. –

Verwandte Themen