diff --git a/resources/assets/javascripts/lib/dialog.js b/resources/assets/javascripts/lib/dialog.js
index 23a17af619fdd76f2b654203b7434b4ac6398702..7c70aedf0bf30481c221c6e7d499fb54e2d8283c 100644
--- a/resources/assets/javascripts/lib/dialog.js
+++ b/resources/assets/javascripts/lib/dialog.js
@@ -682,8 +682,17 @@ Dialog.initialize = function() {
     // Actual dialog handler
     function dialogHandler(event) {
         if (!event.isDefaultPrevented() && checkValidity(event.target)) {
-            var target = $(event.target).closest('[data-dialog]');
-            var options = target.data().dialog;
+            let target = $(event.target).closest('[data-dialog]');
+            let options = target.data().dialog;
+
+            if (
+                target.is('form')
+                && event.originalEvent.submitter
+                && $(event.originalEvent.submitter).attr('formaction')
+            ) {
+                target.data('formaction', $(event.originalEvent.submitter).attr('formaction'));
+            }
+
             if (Dialog.fromElement(target, parseOptions(options))) {
                 event.preventDefault();
             }