diff options
author | mkanat%bugzilla.org <> | 2008-10-25 06:11:30 +0200 |
---|---|---|
committer | mkanat%bugzilla.org <> | 2008-10-25 06:11:30 +0200 |
commit | 3cea91884b28b52df4e38f2ba88c00b65071a81f (patch) | |
tree | c0f451235176b2b542a38b0c935dcddf0453a1ee /js/field.js | |
parent | e0da20baba17b7f068946c8647fb6d67e77c39b7 (diff) | |
download | bugzilla-3cea91884b28b52df4e38f2ba88c00b65071a81f.tar.gz bugzilla-3cea91884b28b52df4e38f2ba88c00b65071a81f.tar.xz |
Bug 291433: Ability to have custom fields whose visibility depends on the values of other fields
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=bbaetz, a=mkanat
Diffstat (limited to 'js/field.js')
-rw-r--r-- | js/field.js | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/js/field.js b/js/field.js index 497c9d2c1..fb8716872 100644 --- a/js/field.js +++ b/js/field.js @@ -323,3 +323,39 @@ function boldOnChange(e, field_id){ } } } + +/** + * Says that a field should only be displayed when another field has + * a certain value. May only be called after the controller has already + * been added to the DOM. + */ +function showFieldWhen(controlled_id, controller_id, value) { + var controller = document.getElementById(controller_id); + // Note that we don't get an object for "controlled" here, because it + // might not yet exist in the DOM. We just pass along its id. + YAHOO.util.Event.addListener(controller, 'change', + handleVisControllerValueChange, [controlled_id, controller, value]); +} + +/** + * Called by showFieldWhen when a field's visibility controller + * changes values. + */ +function handleVisControllerValueChange(e, args) { + var controlled_id = args[0]; + var controller = args[1]; + var value = args[2]; + + var label_container = + document.getElementById('field_label_' + controlled_id); + var field_container = + document.getElementById('field_container_' + controlled_id); + if (bz_valueSelected(controller, value)) { + YAHOO.util.Dom.removeClass(label_container, 'bz_hidden_field'); + YAHOO.util.Dom.removeClass(field_container, 'bz_hidden_field'); + } + else { + YAHOO.util.Dom.addClass(label_container, 'bz_hidden_field'); + YAHOO.util.Dom.addClass(field_container, 'bz_hidden_field'); + } +} |