diff --git a/data/interfaces/default/settings.html b/data/interfaces/default/settings.html
index 118717d0..6a9262e2 100644
--- a/data/interfaces/default/settings.html
+++ b/data/interfaces/default/settings.html
@@ -2059,12 +2059,21 @@ $(document).ready(function() {
});
// Global Variables
+ settingsChanged = false;
serverChanged = false;
authChanged = false;
httpChanged = false;
monitorChanged = false;
directoryChanged = false;
+ // Alert if leaving the page without saving changes to settings
+ window.onbeforeunload = confirmExit;
+ function confirmExit() {
+ if (settingsChanged) {
+ return "Settings were changed without saving!";
+ }
+ }
+
// Alert the user that their changes require a restart.
function postSaveChecks() {
if ((serverChanged && $('#monitoring_use_websocket').is(":checked")) || authChanged || httpChanged || monitorChanged || directoryChanged) {
@@ -2072,9 +2081,14 @@ $(document).ready(function() {
}
$("#http_hashed_password").val($("#http_hash_password").is(":checked") ? 1 : 0)
getSchedulerTable();
+ settingsChanged = false;
}
var configForm = $("#configUpdate");
+ configForm.change(function () {
+ settingsChanged = true;
+ });
+
function saveSettings() {
if (configForm.parsley().validate()) {
doAjaxCall('configUpdate', $(this), 'tabs', true, postSaveChecks);