diff --git a/wagtail/wagtailadmin/static_src/wagtailadmin/js/core.js b/wagtail/wagtailadmin/static_src/wagtailadmin/js/core.js index 4691fa859..9c87d2244 100644 --- a/wagtail/wagtailadmin/static_src/wagtailadmin/js/core.js +++ b/wagtail/wagtailadmin/static_src/wagtailadmin/js/core.js @@ -52,6 +52,9 @@ function initTagField(id, autocompleteUrl) { * - alwaysDirty - When set to true the form will always be considered dirty, * prompting the user even when nothing has been changed. */ + +var canDirtyFormCheck = true; + function enableDirtyFormCheck(formSelector, options) { var $form = $(formSelector); var $ignoredButtons = $form.find( @@ -72,7 +75,11 @@ function enableDirtyFormCheck(formSelector, options) { } }); - if (!triggeredByIgnoredButton && (alwaysDirty || $form.serialize() != initialData)) { + if (!canDirtyFormCheck) { + triggeredByIgnoredButton = true; + } + + if (canDirtyFormCheck && !triggeredByIgnoredButton && (alwaysDirty || $form.serialize() != initialData)) { event.returnValue = confirmationMessage; return confirmationMessage; } diff --git a/wagtail/wagtailadmin/static_src/wagtailadmin/js/page-editor.js b/wagtail/wagtailadmin/static_src/wagtailadmin/js/page-editor.js index 5ee29529b..79508d364 100644 --- a/wagtail/wagtailadmin/static_src/wagtailadmin/js/page-editor.js +++ b/wagtail/wagtailadmin/static_src/wagtailadmin/js/page-editor.js @@ -366,11 +366,13 @@ function initCollapsibleBlocks() { function initKeyboardShortcuts() { Mousetrap.bind(['mod+p'], function(e) { + canDirtyFormCheck = false; $('.action-preview').trigger('click'); return false; }); Mousetrap.bind(['mod+s'], function(e) { + canDirtyFormCheck = false; $('.action-save').trigger('click'); return false; });