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

时间:2015-01-02 21:25:42

标签: jira custom-fields jira-plugin

我正在JIRA实施一个服务台,我有两个下拉菜单 - 类别子类别单一值选择强>

例如, 我关注类别

  • 内容开发
  • 活动
  • 设计

每个类别都有一个子类别列表。例如,设计将包含以下选项列表

  • 活动抵押品
  • 品牌
  • 名片

默认情况下,类别下拉列表应显示在 CREATE ISSUE 屏幕上。 当用户选择类别之一时,相应的子类别下拉列表应显示在CREATE ISSUE屏幕 AND 该子类别下拉列表中应该是MANDATORY字段。

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

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

然而,这对我不起作用。当我在自定义字段的描述中放置任何JAVASCRIPT时,它会在保存后立即运行 - 在字段配置屏幕上。例如,我只是在描述中添加了一个JAVASCRIPT,然后立即收到警报(在字段配置屏幕上)。

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

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

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

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

我的JIRA版本是:6.1.4

1 个答案:

答案 0 :(得分:0)

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

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

例如Design - &gt; 将customfield_ID1替换为Category 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>

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

现在为了使它们成为必需项,您需要在项目工作流中创建转换时将该代码编写为验证器,如下所示:

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 Lavania