From c53716ffd96c39f8ed357dfe276aa1e1dab8678a Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Sun, 16 Jun 2019 10:58:56 -0400 Subject: [PATCH] SubmitOnce - play nice with jQuery validate --- js/Common.js | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/js/Common.js b/js/Common.js index 41be7f03ba..25e228b594 100644 --- a/js/Common.js +++ b/js/Common.js @@ -874,10 +874,21 @@ if (!CRM.vars) CRM.vars = {}; submitButton = $(e.target).closest('.ui-dialog').find('button[data-identifier="' + identifier + '"]')[0] || submitButton; } } - $(submitButton).siblings('.crm-i').add('.crm-i, .ui-icon', submitButton).removeClass().addClass('crm-i fa-spinner fa-pulse'); + var $icon = $(submitButton).siblings('.crm-i').add('.crm-i, .ui-icon', submitButton); + $icon.data('origClass', $icon.attr('class')).removeClass().addClass('crm-i crm-submit-icon fa-spinner fa-pulse'); } } + // If form fails validation, restore button icon and reset the submitted array + function submitFormInvalid(form) { + submitted = []; + $('.crm-i.crm-submit-icon').each(function() { + if ($(this).data('origClass')) { + $(this).removeClass().addClass($(this).data('origClass')); + } + }); + } + // Initialize widgets $(document) .on('crmLoad', function(e) { @@ -943,7 +954,10 @@ if (!CRM.vars) CRM.vars = {}; CRM.wysiwyg.create(this); } }); - $('form[data-submit-once]', e.target).submit(submitOnceForm); + // Submit once handlers + $('form[data-submit-once]', e.target) + .submit(submitOnceForm) + .on('invalid-form', submitFormInvalid); $('form[data-submit-once] input[type=submit]', e.target).click(function(e) { submitButton = e.target; }); -- 2.25.1