From 0844fe9fc6d2d5293fad1384d2955dedf30fc8c4 Mon Sep 17 00:00:00 2001 From: Tiago Mello Date: Fri, 27 Aug 2010 00:27:08 -0300 Subject: Bug 479400: Add the ability to show or hide particular custom fields based on multiple values of another field (visibility controllers) r/a=mkanat --- js/field.js | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'js') diff --git a/js/field.js b/js/field.js index a64369d33..8e1f53991 100644 --- a/js/field.js +++ b/js/field.js @@ -465,12 +465,12 @@ function setClassification() { * a certain value. May only be called after the controller has already * been added to the DOM. */ -function showFieldWhen(controlled_id, controller_id, value) { +function showFieldWhen(controlled_id, controller_id, values) { 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]); + YAHOO.util.Event.addListener(controller, 'change', + handleVisControllerValueChange, [controlled_id, controller, values]); } /** @@ -480,13 +480,21 @@ function showFieldWhen(controlled_id, controller_id, value) { function handleVisControllerValueChange(e, args) { var controlled_id = args[0]; var controller = args[1]; - var value = args[2]; + var values = 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)) { + var selected = false; + for (var i = 0; i < values.length; i++) { + if (bz_valueSelected(controller, values[i])) { + selected = true; + break; + } + } + + if (selected) { YAHOO.util.Dom.removeClass(label_container, 'bz_hidden_field'); YAHOO.util.Dom.removeClass(field_container, 'bz_hidden_field'); } -- cgit v1.2.3-24-g4f1b