在CREATE ISSUE屏幕上显示基于其他自定义字段值的自定义字段

问题描述 投票:1回答:1

我正在JIRA中实施一个帮助台,我有两个下拉菜单 - 分别为“类别和子类别”的“单值选择”。

例如,我有以下类别:

  • 内容开发
  • 活动
  • 设计

每个类别都有一个子类别列表。例如,Design将有以下选项列表

  • 事件抵押品
  • 品牌
  • 商业名片

默认情况下,只有类别下拉列表应显示在CREATE ISSUE屏幕上。当用户选择其中一个类别时,相应的子类别下拉列表应显示在CREATE ISSUE屏幕上,并且该子类别下拉列表应为MANDATORY字段。

我在以下链接中查找了可能的解决方案:

前两个链接基本上建议使用相同的解决方案 - 即将JAVASCRIPT放在自定义字段的描述字段中,并在此问题上的许多其他博客上提出相同的建议。他们都给出了同样的例子。

但这不适合我。当我在自定义字段的描述中放置任何JAVASCRIPT时,它会在保存时立即运行 - 在“现场配置”屏幕上。例如,我只是在描述中放入了一个JAVASCRIPT,我立即得到了警报(在Field Configuration屏幕上)。

<script type="text/javascript">
alert('hi');
 </script>

但是,我没有在CREATE ISSUE屏幕上收到任何警报。所以,不确定我是否遗漏了任何东西。请告知我是否正朝着正确的方向前进。

第3个链接,建议从JIRA机器创建一个插件。但是,我无法访问该计算机,我只能拥有JIRA的管理员权限。

有没有可行的方法通过即时使用的默认JIRA配置/外部插件来实现它?

我的JIRA版本是:6.1.4

jira custom-fields jira-plugin
1个回答
0
投票

我在JIRA 6.0.8,JIRA 6.2.4和JIRA 6.4.8中的自定义字段中使用了Java脚本,所以我认为它绝对适用于JIRA 6.1.4。

您只需将javascript放在子类别自定义字段中,如下所示:

例如,对于Design - >将customfield_ID1替换为Custom Custom字段的自定义id,将customfield_ID2替换为Sub Category Design Custom字段的自定义ID

<script type="text/javascript">
jQuery(document).ready(function($) {
JIRA.bind(JIRA.Events.NEW_CONTENT_ADDED, function (e, context) {
callChangeFunction();
});
callChangeFunction();
function callChangeFunction(){
showHidField();
// dropdown custom field change function
$("#customfield_ID1").change(function() {
showHidField();
});

}

function showHidField(){
//drop down field selected value
var dropDownFieldval =$.trim($("#customfield_ID1 :selected").text());
//test field1
$("#customfield_ID2").closest('div.field-group').hide();
if(dropDownFieldval == 'Design'){
$("#customfield_ID2").closest('div.field-group').show();
}else
$("#customfield_ID2").closest('div.field-group').hide();

}

});

</script>

上面将显示或隐藏字段,请确保Category和Subcategory自定义字段都在同一屏幕上(例如:创建屏幕)

现在为了使它们成为Mandatory,您需要在Project Workflow中创建转换时将该代码编写为验证器,如下所示:

import com.atlassian.jira.issue.customfields.option.LazyLoadedOption;
LazyLoadedOption selOption = issue.getCustomFieldValue   (customFieldManager.getCustomFieldObject('customfield_ID1'));
(selOption.getValue()=='Design' && cfValues[Name of design Sub Category field#'])|| selOption.getValue()=='Events';

确保安装了Behavior Plugin以获得简单的脚本验证器

希望这可以帮助!

Priyanka Lavanya

© www.soinside.com 2019 - 2024. All rights reserved.