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

0 vote

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.

 

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.

0 vote

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

0 vote

or a single checkbox...

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.

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
How to earn badges on the Atlassian Community

How to earn badges on the Atlassian Community

Badges are a great way to show off community activity, whether you’re a newbie or a Champion.

Learn more
Community showcase
Published Thursday in Marketplace Apps

Tips on how to choose the best estimation method for your planning

Planning and grooming sessions all come with their own sets of rules. Team members meet to estimate stories or other work items, all according to an agreed-upon process. And with every session comes ...

71 views 0 11
Read article

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