Make checkbox custom field options hide/visible depending on selections made in another field.

n August 1, 2016

Hi,

Is it possible to do this and how?

I have two multiple checkbox fields and options as below:

Field1---

---[] a

---[] b

---[] c

Field2---

---[] 1

---[] 2

---[] 3

---[] 4

---[] 5

---[] 6

Field2 options (1,2) are related to Field1 option (a)

Field2 options (3,4) are related to Field1 option (b)

Field2 options (5,6) are related to Field1 option (c)

If I select option "a" from Field1, other than the options 1 and 2 in Field2, every other option should be hidden.

Likewise, If I select options "a" and "b" from Field1, other than options 1,2,3 and 4 every other options should be hidden.

Related options should only be enabled when a selection is made.

It can be possible with jquery or with the behaviours but i don't know how to start . can anyone help me?

Or

Is there any best way to solve this. Any way that we can add a heading to divide the options under the field.

Thanks in advance.

2 answers

0 votes
n August 9, 2016
Found below is one of the similar issues. But it is for change in Select list field.
I have enclosed a code sample below which shows how you can use the Behaviours plugin provided by script runner to dynamically remove and set from a Select List field based on an option selected inside a check box field.
import com.onresolve.jira.groovy.user.FieldBehaviours
import com.onresolve.jira.groovy.user.FormField
import com.atlassian.jira.component.ComponentAccessor
 
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def optionsManager = ComponentAccessor.getOptionsManager()
 
// Get a pointer to my select list field
def selectList = getFieldByName("Demo Select List")
 
// Get a pointer to my check box field
FormField checkBox = getFieldByName("Check Box 1")
 
// Get access to the required custom field and options managers
def customField = customFieldManager.getCustomFieldObject(selectList.getFieldId())
def config = customField.getRelevantConfig(getIssueContext())
def options = optionsManager.getOptions(config)
 
 
// Get the checkbox option value as a String
def checkBoxVal = checkBox.getValue()
 
// Logic to do some actions depending on what check box value is selected
if (checkBoxVal == "A") {
    // define and set the required options when checkbox A is selected
    def optionsMap = options.findAll {
        it.value in ["A""B"// list of options you want to show
    }.collectEntries {
        [
                (it.optionId.toString()): it.value
        ]
    }
    selectList.setFieldOptions(optionsMap)
else if (checkBoxVal == "B") {
    // define and set the required options when checkbox A is selected
    def optionsMap = options.findAll {
        it.value in ["C""D""E"// list of options you want to show
    }.collectEntries {
        [
                (it.optionId.toString()): it.value
        ]
    }
   selectList.setFieldOptions(optionsMap)
}
Would be great if some one can help me with making it able to setFieldOptions for the Checkbox field. 
Thanks.
0 votes
Peter Geshev
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
August 3, 2016

As a workaround you can have field 1 and three(one for each option of field 1) other multiple checkbox fields which will be displayed if values a, b and c are selected respectively. 

n August 9, 2016

Thanks for the response.

 

Well thats a good Idea.

Field1 is having only 3 options in the scene I explained above.

I am working on the checkbox field which has 61 options. So I was trying to use only two fields instead of having individual fields for each option.

 

Suggest an answer

Log in or Sign up to answer