Was Sie tun müssen, ist jQuery.deferred/Versprechen verwenden.
http://api.jquery.com/deferred.promise/
In diesem Beispiel asyncEvent
1) erzeugt ein jquery Objekt latenten
2) hat eine Logik zum Auflösungs-/ablehnen, Ihre ok/stornieren
3) liefert eine deferred.promise() - Objekt, das dann mit einem $ .when verwendet werden kann, um festzustellen, ob ein zurückgestelltes Objekt aufgelöst oder zurückgewiesen wurde (ok/cancel).
Was würden Sie tun, ist
1) erstellen jquery latente Objekt
2) starten Sie Ihren Dialog mit OK/Cancel Einstellung der deferred.resolve/reject
3) liefern eine latente .promise() Objekt,
4) Verwenden Sie das latente Versprechen Objekt mit $ .when http://api.jquery.com/jQuery.when/
Sie könnten auch nur Entschlossenheit verwenden und bestimmen, ob die confirm in dem $ .when, wahr oder falsch war
function customConfirm(customMessage) {
var dfd = new jQuery.Deferred();
$("#popUp").html(customMessage);
$("#popUp").dialog({
resizable: false,
height: 240,
modal: true,
buttons: {
"OK": function() {
$(this).dialog("close");
alert(true);
dfd.resolve(true);
},
Cancel: function() {
$(this).dialog("close");
alert(false);
dfd.resolve(false);
}
}
});
return dfd.promise();
}
$.when(customConfirm('hey')).then(
function(confirm) {
if(confirm){alert("things are going well");}
else{alert("you fail this time");}
});
Hoffnung, das hilft.
Folgen Sie diesem und anderen Beispielen mit jQuery 3.1.0 und jQuery UI 1.12.0, die versuchen, einen Bestätigungsdialog zu erstellen. Erstellte vor dem Ausführen von '$ .when()' eine Standardvariable. Gefunden, dass die Variable übergeben wurde, bevor '$ .when()' abgeschlossen wurde. Irgendwelche Vorschläge oder Ratschläge? – Twisty
FYI - Ich habe mein Problem gefunden. Ich habe die anonyme Funktion verwendet und die Variablen im Inneren würden nach der Ausführung verloren gehen. Der Wechsel zu einer bereits definierten Funktion hat geholfen. – Twisty