diff --git a/resources/assets/javascripts/lib/dialog.js b/resources/assets/javascripts/lib/dialog.js index 0ce30c6eef60f72a09c686c4bd2ea770f9af50c1..bd1cc7b4dd62192e1479686bfb0a3b5d714e15c6 100644 --- a/resources/assets/javascripts/lib/dialog.js +++ b/resources/assets/javascripts/lib/dialog.js @@ -667,9 +667,17 @@ Dialog.removeHeaderHandler = function (header) { }; Dialog.initialize = function() { + function checkValidity(element) { + const form = element.closest('form'); + if (form === null) { + return true; + } + return form.checkValidity(); + } + // Actual dialog handler function dialogHandler(event) { - if (!event.isDefaultPrevented()) { + if (!event.isDefaultPrevented() && checkValidity(event.target)) { var target = $(event.target).closest('[data-dialog]'); var options = target.data().dialog; if (Dialog.fromElement(target, parseOptions(options))) { @@ -679,7 +687,7 @@ Dialog.initialize = function() { } function clickHandler(event) { - if (!event.isDefaultPrevented()) { + if (!event.isDefaultPrevented() && checkValidity(event.target)) { var element = $(event.target).closest(':submit,input[type="image"]'); var form = element.closest('form'); var action = element.attr('formaction');