2016-09-08 6 views
1

Szenario:Wie wird ein Ereignis abgefangen, wenn der Benutzer außerhalb des modalen Bootstrap-Dialogfelds klickt?

  1. ich auf einem
  2. Ajax Ruftaste klicken zum Server hergestellt wird
  3. Daten zurückgegeben und modal ist

Problem gezeigt:

Wenn der Benutzer auf die Schaltfläche zum Schließen oder auf das "X" in der Ecke klickt Fangen Sie dieses Ereignis ein, indem Sie diesen beiden Elementen eine Klasse zuweisen und dieser Klasse ein Ereignis zuweisen.

-Code:

$(document).on("click", ".dialogTankClose", function() { 
    //some code 
}) 

Mein Problem ist, dass ich nicht herausfinden kann, wie zu fangen, wenn der Benutzer außerhalb des Dialogs oder Pressen „escape“ klickt.

$(document).on("click", "modalCloseEvent",function(){ 
// how to catch this? 
}) 

Wie kann ich das fangen?

Antwort

2

Das Bootstrap-Modal löst ein Ereignis aus, wenn es geschlossen wird, an dem Sie haken können: hidden.bs.modal. Dieses Ereignis wird ausgelöst, unabhängig davon, wie das Modal geschlossen ist. Versuchen Sie folgendes:

$('#bootstrapModal').on("hidden.bs.modal", function() { 
    $.automation.worker.bindIntervalEvent("#TanksContent", "/Tank/GetTanks", function() { 
     $.automation.tanks.tableInit(); 
    }); 
}); 

Sie einen Event-Handler delegiert verwenden können, wenn die modale dynamisch auf das DOM hinzugefügt wird:

$(document).on("hidden.bs.modal", '#bootstrapModal', function() { 
    $.automation.worker.bindIntervalEvent("#TanksContent", "/Tank/GetTanks", function() { 
     $.automation.tanks.tableInit(); 
    }); 
}); 

Weitere Informationen im Bootstrap documentation

+0

Wenn Verstehe ich das richtig requiere Sie, dass der modale container ist ständig auf der seite vorhanden? Dies ist hier nicht der Fall. Ich gebe den Enitre-Dialog von meinem Ajax-Aufruf zurück – ThunD3eR

+0

Dann können Sie einen delegierten Event-Handler verwenden. Antwort aktualisiert –

+0

Danke @Rory McCrossan! – ThunD3eR

Verwandte Themen