From f63407a87e9dc1c1f79c9a7d885cdd58a55ed657 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Mu=C3=B1iz?= Date: Mon, 5 Oct 2015 21:16:33 +0200 Subject: [PATCH] [JENKINS-21720] JS alert preventig to leave a configuration page even without formulary changes --- core/src/main/resources/lib/form/confirm.js | 4 ---- .../main/resources/lib/form/select/select.js | 17 ++++++++++++++++- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/core/src/main/resources/lib/form/confirm.js b/core/src/main/resources/lib/form/confirm.js index d5948c3aa2..64f40eb267 100644 --- a/core/src/main/resources/lib/form/confirm.js +++ b/core/src/main/resources/lib/form/confirm.js @@ -33,9 +33,6 @@ } function initConfirm() { - // Timeout is needed since some events get sent on page load for some reason. - // Shouldn't hurt anything for this to only start monitoring events after a few millis;. - setTimeout(function() { var configForm = document.getElementsByName("config"); if (configForm.length > 0) { configForm = configForm[0] @@ -78,7 +75,6 @@ for ( var i = 0; i < inputs.length; i++) { $(inputs[i]).on('input', confirm); } - }, 100); } window.onbeforeunload = confirmExit; diff --git a/core/src/main/resources/lib/form/select/select.js b/core/src/main/resources/lib/form/select/select.js index 6ea7a1e4c6..0b7ce9b2c6 100644 --- a/core/src/main/resources/lib/form/select/select.js +++ b/core/src/main/resources/lib/form/select/select.js @@ -41,6 +41,19 @@ function updateListBox(listBox,url,config) { } Behaviour.specify("SELECT.select", 'select', 1000, function(e) { + + function hasChanged(selectEl, originalValue) { + var firstValue = selectEl.options[0].value; + var selectedValue = selectEl.value; + if (originalValue == "" && selectedValue == firstValue) { + // There was no value pre-selected but after the call to updateListBox the first value is selected by + // default. This must not be considered a change. + return false; + } else { + return originalValue != selectedValue; + } + }; + // controls that this SELECT box depends on refillOnChange(e,function(params) { var value = e.value; @@ -60,7 +73,9 @@ Behaviour.specify("SELECT.select", 'select', 1000, function(e) { fireEvent(e,"filled"); // let other interested parties know that the items have changed // if the update changed the current selection, others listening to this control needs to be notified. - if (e.value!=value) fireEvent(e,"change"); + if (hasChanged(e, value)) { + fireEvent(e,"change"); + } } }); }); -- GitLab