X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=js%2FCommon.js;h=abc5cae3919372b766bb09156a5cef8341ce8d66;hb=5559162a97d504b2f8c0541d6ce5ee78f3cfaadc;hp=8a385fb1323909c58a960e235bceca6f83bf24b3;hpb=d5f6077993b1df66a934933af0bc9327cff13e78;p=civicrm-core.git diff --git a/js/Common.js b/js/Common.js index 8a385fb132..abc5cae391 100644 --- a/js/Common.js +++ b/js/Common.js @@ -245,14 +245,15 @@ CRM.validate = CRM.validate || { */ CRM.utils.initialValueChanged = function(el) { var isDirty = false; - $(':input:visible, :input.select2-offscreen', el).each(function () { + $(':input:visible, .select2-container:visible+:input.select2-offscreen', el).not('[type=submit], [type=button], .crm-action-menu').each(function () { var initialValue = $(this).data('crm-initial-value'); - if (initialValue !== undefined && initialValue != $(this).val()) { + // skip change of value for submit buttons + if (initialValue !== undefined && !_.isEqual(initialValue, $(this).val())) { isDirty = true; } }); return isDirty; - } + }; /** * Wrapper for select2 initialization function; supplies defaults @@ -504,21 +505,22 @@ CRM.validate = CRM.validate || { }) .on('dialogclose', function(e) { // Restore scrollbars when closing modal - if ($('.ui-dialog .modal-dialog').not(e.target).length < 1) { + if ($('.ui-dialog .modal-dialog:visible').not(e.target).length < 1) { $('body').css({overflow: ''}); } }) .on('submit', function(e) { - // CRM-14353 - disable changes warn when submitting the form - $('[data-warn-changes]').removeAttr('data-warn-changes'); + // CRM-14353 - disable changes warn when submitting a form + $('[data-warn-changes]').attr('data-warn-changes', 'false'); }) - ; - - window.onbeforeunload = function() { - if (CRM.utils.initialValueChanged($('form[data-warn-changes=true]'))) { - return ts('You have unsaved changes.'); - } - }; + ; + + // CRM-14353 - Warn of unsaved changes for forms which have opted in + window.onbeforeunload = function() { + if (CRM.utils.initialValueChanged($('form[data-warn-changes=true]:visible'))) { + return ts('You have unsaved changes.'); + } + }; /** * Function to make multiselect boxes behave as fields in small screens