Sie benötigen das Modal in Ihrem HTML. Wenn auf die Schaltfläche „Löschen“ geklickt wird, wird das Modal angezeigt. Es ist auch wichtig zu verhindern, dass das Klicken auf diese Schaltfläche das Formular absendet. Wenn Sie auf die Bestätigung klicken, wird das Formular gesendet.
Das funktioniert großartig, mit einer Randbemerkung: Wenn ich auf Löschen klicke, nachdem ich auf Abbrechen geklickt habe, dann klicke ich erneut auf Löschen, in meinem Fall wird die Übermittlung zweimal gesendet. Es sollte nur eine eingereicht werden.
– Chrys
4. Dezember 14 um 18:21 Uhr
@Khrys, Sie sollten überprüfen, ob Sie eingeschlossen haben e.prevenDefault()
– Nathan Koop
19. Dezember 14 um 20:49 Uhr
Hier gibt es ein Problem. Beachten Sie, dass, wenn Sie dies verwenden, um zu bestätigen, etwas mit einer Art ID zu löschen. Was passiert ist, wenn Sie auf “Abbrechen” klicken, wird das Ereignis immer noch an das Modal angehängt. Wenn Sie danach auf eine andere Sache zum Löschen klicken, werden beide gelöscht.
– Pedro Lourenço
11. April 16 um 11:07 Uhr
für das Problem zu den vorherigen Kommentaren bemerkte Pedro. $(‘#confirm’).unbind() hilft, angehängte Ereignisse zu lösen
– schiebt
10. Mai 16 um 7:29 Uhr
Überprüfen Sie meine Antwort hier – stackoverflow.com/questions/8982295/… für eine wiederverwendbare Komponente.
Seien Sie vorsichtig, Bootbox kann mit Bootstrap-Modalen in Konflikt geraten. Tut mir leid, dass ich auf die alte Frage geantwortet habe, aber ich bin gerade auf dieses Problem gestoßen.
– SuperManSL
5. Januar 16 um 21:51 Uhr
Alessandro
Ich habe gerade heute das gleiche Problem. Dies ist meine Lösung (die meiner Meinung nach besser und einfacher ist):
Dies ist nicht im Kontext des angegebenen Codes. Wie wendet OP dies auf seinen Code an?
– Popnudeln
25. März 14 um 14:12 Uhr
Erstellen Sie einen modalen Dialog in HTML mit id=”confirmation” und verwenden Sie die Funktion showConfirmation.
Denken Sie auch daran, die Abbruch- und Erfolgsschaltflächen nach dem Ausblenden des modalen Dialogs zu entbinden (modal.unbind()). Wenn Sie dies nicht tun, erhalten Sie eine doppelte Bindung. Beispiel: Wenn Sie den Dialog einmal öffnen und „Abbrechen“ drücken und dann den Dialog ein zweites Mal öffnen und „Ok“ drücken, erhalten Sie 2 Ausführungen des Erfolgsrückrufs.
showConfirmation = function(title, message, success, cancel) {
title = title ? title : 'Are you sure?';
var modal = $("#confirmation");
modal.find(".modal-title").html(title).end()
.find(".modal-body").html(message).end()
.modal({ backdrop: 'static', keyboard: false })
.on('hidden.bs.modal', function () {
modal.unbind();
});
if (success) {
modal.one('click', '.modal-footer .btn-primary', success);
}
if (cancel) {
modal.one('click', '.modal-header .close, .modal-footer .btn-default', cancel);
}
};
// bind confirmation dialog on delete buttons
$(document).on("click", ".delete-event, .delete-all-event", function(event){
event.preventDefault();
var self = $(this);
var url = $(this).data('url');
var success = function(){
alert('window.location.href=url');
}
var cancel = function(){
alert('Cancel');
};
if (self.data('confirmation')) {
var title = self.data('confirmation-title') ? self.data('confirmation-title') : undefined;
var message = self.data('confirmation');
showConfirmation(title, message, success, cancel);
} else {
success();
}
});
stackoverflow.com/a/42346781/4316802
– Alexej Nikitenko
20. Februar 17 um 14:11 Uhr