Script Runner Behaviours - Hide/Show based on checkbox selection

I have the following checkbox field:

Existing Program or Campaign? ( customfield_10209 )

It has two checkboxes: Yes, No

If (and only if) the "Yes" checkbox is selected, I need the following field to appear on the screen:

Campaign or Program Name ( customfield_10208 )

My server side script:

def checkBox = getFieldById("customfield_10209")
def conditionA = getFieldById("customfield_10208")
conditionA.setHidden(true);
if (checkBox.getValue() == "Yes") {
    conditionA.setHidden(false);
}

JIRA Core version 7.1.9

Script Runner version 4.3.6

 

When creating an issue, the "Campaign or Program name" field always appears. If you tick the "No" checkbox, it goes away. If you untick the "No" checkbox it stays away. If you tick the "Yes" checkbox it appears.  I need to make it not appear initially and only when the "Yes" checkbox is ticked.  

Any suggestions are appreciated.

6 answers

1 accepted

This widget could not be displayed.

But to answer your question, it seems like for checkboxes the validatior is not firing when the form first loads, as it should.

To work around this you can use an initialiser to set it hidden at first, or just use the configuration options on the field in the behaviour.

 

@Jamie Echlin [Adaptavist]

 

Hi Jamie

I am trying to fix the same issue, the workaround of using the initialiser does work. However i dont want to use this as I have many projects using this screen scheme so therefore the hidden field is shown on there screens!

I would like to use the field configuration to make my custom field hidden and then use the behaviour to show it. But i cannot get this working.

For this example i have the field "Hidden Field" set to hidden in the field configuration. When i choose "SIT" for the field "Environment Name" it does not unhide "Hidden Field"

def cfENV = getFieldByName("Environment Name")
def cfHID = getFieldByName("Hidden Field")

def cfENVVAL = cfENV.getValue()

if (cfENVVAL == "SIT"){
cfHID.setHidden(false)
}else{
cfHID.setHidden(true)
}

 

ps- All this is on the create screen

Can you advise?

@Jamie Echlin [Adaptavist]

Do i need to look at the field configuration and the custom field config for it? If so how do i do that? 

This widget could not be displayed.

Hi Dave,

Please try the following:

def checkBoxField = getFieldByName('Existing Program or Campaign')
// Get a pointer to the Start Date Field
def conditionField = getFieldByName('Campaign or Program Name')
 
// Get the Select List Field Value
def checkBoxFieldVal = checkBoxField.getValue()
 
// Hide Campaign or Program Name based on checked value
if (checkBoxFieldVal == "Yes"){
   conditionField.setHidden(false)
}else{
   conditionField.setHidden(true)
}

That works for me, so I hope it helps.

Please ensure you have the Campaign or Program Name field in the behaviour set as Optional/Writable/Shown too.

regards, Mark.

Thanks for the script, Mark.  Unfortunately, same behavior.  This is on a create screen, if that matters.  When I click the Create button, both fields are present. If I tick the "No" checkbox, the "Campaign or Program Name" field goes away. If I untick the "No" checkbox, it stays hidden. If I tick the "Yes" checkbox, it appears.

Hi Dave,

Do you have any javascript or any other Behaviours configured that may potentially clash?

Can you try adding log.warn("setting conditionField") to your logs and see if that helps you get to the bottom of it?

regards, Mark.

This widget could not be displayed.

Why don't you use radio buttons? Being able to tick both Yes and No doesn't make any sense.

This widget could not be displayed.

or a single checkbox...

This widget could not be displayed.

They don't want the "none" option, and I can't disable that globally. Checkboxes is an easy way to have only "Yes" and "No" and the plan is to use a workflow validator to ensure that only one is selected.

This widget could not be displayed.

I got it working.  As Jamie suggested, I needed  to hide the field first with an "Initialiser Function,"

Please share your code. I'm trying to the the same but based on the component instead.

Suggest an answer

Log in or Sign up to answer
Community showcase
Posted Tuesday in Jira

What modern development practices are at the heart of how your team delivers software?

Hey Community mates! Claire here from the Software Product Marketing team. We all know software development changes rapidly, and it's often tough to keep up. But from our research, we've found the h...

174 views 1 3
Join discussion

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you