保存ボタンが JavaScript 関数を呼び出すと仮定すると、次のようなことができます。
function saveFunction(doRedirect){
//normal save code
if(doRedirect)
window.location.href = "main.html";
}
注: 「通常の保存コード」が AJAX 呼び出しの場合doRedirect
、ajax リクエストの成功コールバックにチェックを追加する必要があります。
そして、次のように使用できます:
$('#closeButton').click(function() {
if(confirm("CloseWarning")) {
saveFunction(true);
} else {
window.location.href = "main.html";
}
});
独自のコールバックを使用した代替アプローチ:
function saveFuncton(callback){
//normal save code
//when done (or on AJAX success)
if(callback)
callback(true);//or false if not successful
}
その後....
$('#closeButton').click(function() {
if(confirm("CloseWarning")) {
saveFunction(function(success){
if(success){
window.location.href = "main.html";
}
});
} else {
window.location.href = "main.html";
}
});
HACKY アプローチ (他に代替手段がまったくない場合を除き、使用しないでください)
var isSaving = false;
$(document).ajaxStop(function () {
if (isSaving) {
window.location.href = "main.html";
}
});
その後...
$('#closeButton').click(function() {
if(confirm("CloseWarning")) {
isSaving = true;
$('#saveButton').click();
} else {
window.location.href = "main.html";
}
});
これは機能する可能性がありますが、保存機能がどのように機能するか、および他の何かが同時に ajax 呼び出しを実行している可能性があるかどうかに大きく依存します。また、保存機能が複数の AJAX 呼び出しを行う場合、このメソッドは失敗する可能性があります。これはハッキーなアプローチです。自己責任で使用してください。