Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in
Celebration

Earn badges and make progress

You're on your way to the next level! Join the Kudos program to earn points and save your progress.

Deleted user Avatar
Deleted user

Level 1: Seed

25 / 150 points

Next: Root

Avatar

1 badge earned

Collect

Participate in fun challenges

Challenges come and go, but your rewards stay with you. Do more to earn more!

Challenges
Coins

Gift kudos to your peers

What goes around comes around! Share the love by gifting kudos to your peers.

Recognition
Ribbon

Rise up in the ranks

Keep earning points to reach the top of the leaderboard. It resets every quarter so you always have a chance!

Leaderboard

Come for the products,
stay for the community

The Atlassian Community can help you and your team get more value out of Atlassian products and practices.

Atlassian Community about banner
4,463,059
Community Members
 
Community Events
176
Community Groups

Check the selection of a multi select custom field for specific values

Edited
Deleted user Mar 01, 2016

Hello Guys,

Could you please help me to validate the values selected in a multi select custom field of Jira.

In the multi select custom field 'cf1', if the user selects any field other that "cf1_value_1", then it should check whether another field 'cf2' selected is None, and should not allow to create the issue if 'cf2' is empty.

cf1 is a multi-select and cf2 is a single select.

It doesn't matter if "cf1_value_1" is selected, but if the selection contains any other values then it should trigger the validation.

I tried the below, but dint work.

 \{

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue
import com.opensymphony.workflow.InvalidInputException
import java.sql.Timestamp;
import com.atlassian.jira.issue.customfields.manager.OptionsManager
import com.atlassian.jira.issue.customfields.option.Option

Issue issue = issue

def platform = customFieldManager.getCustomFieldObject("customfield_1")

def migrate = customFieldManager.getCustomFieldObject("customfield_2")

def migrateValue = issue.getCustomFieldValue(migrate).getValue()

def platformValue = issue.getCustomFieldValue(platform).getValue()

 

if (platformValue.containsAll(['cf1_value_2','cf1_value_3,'cf1_value_4,'cf1_value_5]))
{
if (migrateValue == 'None')
{
throw new InvalidInputException("Please update the AWS Migration plan")
}
else {
return
}

}
else {
return
}

\}

Thanks,

Fahad

2 answers

1 accepted

5 votes
Answer accepted

Hi Fahad,

You could use the Behaviours plugin in order to make the Text Field (cf2) required when the first option is selected in the Multi Select Field (cf1).

I have attached a sample script below to show how you could do this.

import com.atlassian.jira.component.ComponentAccessor

// Get a pointer to my custom fields
def multisSelectList = getFieldByName("DemoMultiSelect")
def textField = getFieldByName("DemoTextField")

// Get the Value of My Select Field
def selectVal = multisSelectList.getValue()

// If the first option is selected in the multi select list then make the text field required.
if(selectVal.toString().contains("1")){
    textField.setRequired(true) // Make text field required
}else{
    textField.setRequired(false) // Make text field optional
}

Please note that behaviours works on the create and edit screens for issues.

I hope this helps.

Thanks

Kristian

Thank you so much

1 vote
JamieA Rising Star Mar 01, 2016

Please use the \{code\} macro, your code is unreadable. Also it's not even valid.

If they are multiselects, getCustomFieldValue will return a List<Option>, so you can't call getValue() on that. Please check the examples at https://scriptrunner.adaptavist.com/latest/jira/recipes/workflow/validators/simple-scripted-validators.html#_validating_a_multi_select_option_is_selected.

 

I have a similar requirement.

Instead of making text field required/not-required but to make it hide/unhide.

My field "Field A" is a multi-select field with options A,B,C,Other. First I converted this field into multi select dropdown from check-box type by using below line in initializer (Behaviors).

getFieldByName("Field A").convertToMultiSelect()

After that, I used the below code in server-side script by adding a field. There are no errors.

import com.atlassian.jira.component.ComponentAccessor

// Get a pointer to my custom fields
def multisSelectList = getFieldByName("Field A")
def textField = getFieldByName("Other")

// Get the Value of My Select Field
def selectVal = multisSelectList.getValue()

// If the first option is selected in the multi select list then make the text field required.
if(selectVal.toString().contains("Other")){
textField.setHidden(false) // Make text field required
}else{
textField.setHidden(true) // Make text field optional
}

But when I

1. select only "Other" value in Field A, text field appears BUT after selecting Other value and then remove it, the text field still appears.
2. first select values A/B/C and then select "Other", text field appears. Again when I remove "Other" value after selecting it, it won't hide.

And none of the above scenarios are applicable if do not convert the field from checkbox multi select to dropdown multi select. The field behavior is perfect. 

Any help appreciated

Suggest an answer

Log in or Sign up to answer
TAGS

Atlassian Community Events