From 63be194996849202878c4a87e4c68a25d1976d3e Mon Sep 17 00:00:00 2001 From: "mkanat%bugzilla.org" <> Date: Fri, 7 Nov 2008 17:34:39 +0000 Subject: Bug 308253: Ability to add select (enum) fields to a bug whose list of values depends on the value of another field Patch By Max Kanat-Alexander r=bbaetz, a=mkanat --- js/field.js | 121 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ js/util.js | 34 +++++++++++++++++ 2 files changed, 155 insertions(+) (limited to 'js') diff --git a/js/field.js b/js/field.js index fb8716872..daa390482 100644 --- a/js/field.js +++ b/js/field.js @@ -359,3 +359,124 @@ function handleVisControllerValueChange(e, args) { YAHOO.util.Dom.addClass(field_container, 'bz_hidden_field'); } } + +function showValueWhen(controlled_field_id, controlled_value, + controller_field_id, controller_value) +{ + var controller_field = document.getElementById(controller_field_id); + // Note that we don't get an object for the controlled field here, + // because it might not yet exist in the DOM. We just pass along its id. + YAHOO.util.Event.addListener(controller_field, 'change', + handleValControllerChange, [controlled_field_id, controlled_value, + controller_field, controller_value]); +} + +function handleValControllerChange(e, args) { + var controlled_field = document.getElementById(args[0]); + var controlled_value = args[1]; + var controller_field = args[2]; + var controller_value = args[3]; + + var item = getPossiblyHiddenOption(controlled_field, controlled_value); + if (bz_valueSelected(controller_field, controller_value)) { + showOptionInIE(item, controlled_field); + YAHOO.util.Dom.removeClass(item, 'bz_hidden_option'); + item.disabled = false; + } + else if (!item.disabled) { + YAHOO.util.Dom.addClass(item, 'bz_hidden_option'); + if (item.selected) { + item.selected = false; + bz_fireEvent(controlled_field, 'change'); + } + item.disabled = true; + hideOptionInIE(item, controlled_field); + } +} + +/*********************************/ +/* Code for Hiding Options in IE */ +/*********************************/ + +/* IE 7 and below (and some other browsers) don't respond to "display: none" + * on