diff --git a/resources/assets/javascripts/lib/dialog.js b/resources/assets/javascripts/lib/dialog.js index bc649703a1d40cb0e4ff8343636a9add4d4b2b0e..5418f91589c6715198f0fce6a9235defad6afee4 100644 --- a/resources/assets/javascripts/lib/dialog.js +++ b/resources/assets/javascripts/lib/dialog.js @@ -672,9 +672,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))) { @@ -684,7 +692,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');