Skip to content

Commit

Permalink
[JENKINS-21720] JS alert preventig to leave a configuration page even…
Browse files Browse the repository at this point in the history
… without formulary changes

(cherry picked from commit f63407a)
  • Loading branch information
amuniz authored and olivergondza committed Oct 19, 2015
1 parent 3af6c6b commit acd341d
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 5 deletions.
4 changes: 0 additions & 4 deletions core/src/main/resources/lib/form/confirm.js
Expand Up @@ -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]
Expand Down Expand Up @@ -78,7 +75,6 @@
for ( var i = 0; i < inputs.length; i++) {
$(inputs[i]).on('input', confirm);
}
}, 100);
}

window.onbeforeunload = confirmExit;
Expand Down
17 changes: 16 additions & 1 deletion core/src/main/resources/lib/form/select/select.js
Expand Up @@ -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;
Expand All @@ -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");
}
}
});
});
Expand Down

0 comments on commit acd341d

Please sign in to comment.