diff --git a/assets/js/page_image_detail.js b/assets/js/page_image_detail.js
index 9bda634a18ece173ed5194b60b7951c87b55c1e8..b81504890e532cae318338b76a643fea2db9adb9 100644
--- a/assets/js/page_image_detail.js
+++ b/assets/js/page_image_detail.js
@@ -28,12 +28,20 @@ const currentState = () => {
     return data;
 };
 
+const formDataToJson = (data) => {
+    const result = {};
+    for (let key of data.keys()) {
+        result[key] = data.getAll(key);
+    }
+    return data;
+};
+
 const doSave = () => {
     const data = currentState();
     save.value = "Saving…";
     postData(location.href, data).then((json) => {
         save.value = "Saved";
-        lastSaved = data;
+        lastSaved = formDataToJson(data);
     })
 };
 
@@ -84,7 +92,7 @@ save.addEventListener("click", (e) => {
 });
 
 window.addEventListener("beforeunload", (e) => {
-    const state = currentState();
+    const state = formDataToJson(currentState());
     if (hasChangedEver && lastSaved !== state) {
         const message = "Your changes have not been saved. Are you sure you want to leave?";
         e.preventDefault();