提交 acd341d5 编写于 作者: A Antonio Muñiz 提交者: Oliver Gondža

[JENKINS-21720] JS alert preventig to leave a configuration page even without formulary changes

(cherry picked from commit f63407a8)
上级 3af6c6b8
...@@ -33,9 +33,6 @@ ...@@ -33,9 +33,6 @@
} }
function initConfirm() { 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"); var configForm = document.getElementsByName("config");
if (configForm.length > 0) { if (configForm.length > 0) {
configForm = configForm[0] configForm = configForm[0]
...@@ -78,7 +75,6 @@ ...@@ -78,7 +75,6 @@
for ( var i = 0; i < inputs.length; i++) { for ( var i = 0; i < inputs.length; i++) {
$(inputs[i]).on('input', confirm); $(inputs[i]).on('input', confirm);
} }
}, 100);
} }
window.onbeforeunload = confirmExit; window.onbeforeunload = confirmExit;
......
...@@ -41,6 +41,19 @@ function updateListBox(listBox,url,config) { ...@@ -41,6 +41,19 @@ function updateListBox(listBox,url,config) {
} }
Behaviour.specify("SELECT.select", 'select', 1000, function(e) { 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 // controls that this SELECT box depends on
refillOnChange(e,function(params) { refillOnChange(e,function(params) {
var value = e.value; var value = e.value;
...@@ -60,7 +73,9 @@ Behaviour.specify("SELECT.select", 'select', 1000, function(e) { ...@@ -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 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 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");
}
} }
}); });
}); });
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册