summaryrefslogtreecommitdiffstats
path: root/web_src/js/features/comp/QuickSubmit.js
diff options
context:
space:
mode:
Diffstat (limited to 'web_src/js/features/comp/QuickSubmit.js')
-rw-r--r--web_src/js/features/comp/QuickSubmit.js21
1 files changed, 14 insertions, 7 deletions
diff --git a/web_src/js/features/comp/QuickSubmit.js b/web_src/js/features/comp/QuickSubmit.js
index d598a59655..2587375a71 100644
--- a/web_src/js/features/comp/QuickSubmit.js
+++ b/web_src/js/features/comp/QuickSubmit.js
@@ -1,17 +1,24 @@
import $ from 'jquery';
export function handleGlobalEnterQuickSubmit(target) {
- const $target = $(target);
- const $form = $(target).closest('form');
- if ($form.length) {
+ const form = target.closest('form');
+ if (form) {
+ if (!form.checkValidity()) {
+ form.reportValidity();
+ return;
+ }
+
+ if (form.classList.contains('form-fetch-action')) {
+ form.dispatchEvent(new SubmitEvent('submit', {bubbles: true, cancelable: true}));
+ return;
+ }
+
// here use the event to trigger the submit event (instead of calling `submit()` method directly)
// otherwise the `areYouSure` handler won't be executed, then there will be an annoying "confirm to leave" dialog
- if ($form[0].checkValidity()) {
- $form.trigger('submit');
- }
+ $(form).trigger('submit');
} else {
// if no form, then the editor is for an AJAX request, dispatch an event to the target, let the target's event handler to do the AJAX request.
// the 'ce-' prefix means this is a CustomEvent
- $target.trigger('ce-quick-submit');
+ target.dispatchEvent(new CustomEvent('ce-quick-submit', {bubbles: true}));
}
}