2013-06-19 87 views
1

在自定義字段插件的開發,我們創建,因爲它應該出現如下的自定義字段(有多個輸入字段):如何開發自定義字段(插件),具有多個輸入字段

CutomFieldName:<Input Textbox> <Input Textbox> <Input Textbox> <sum of input 1,input 2 & input 2>

我正在按照教程Creating a Custom Field in JIRA創建插件。

下面,我已更新edit.vm如下,以包括額外的兩個文本輸入,但它沒有工作......只是出現額外的文本框...(我不知道應該是其他更改要求)。

#customControlHeader ($action $customField.id $customField.name $fieldLayoutItem.required  $displayParameters $auiparams) 
<input class="text" id="$customField.id" name="$customField.id" type="text"  value="$textutils.htmlEncode($!value)" /><input class="text" id="$customField.id"  name="$customField.id" type="text" value="$textutils.htmlEncode($!value)" /><input class="text" id="$customField.id" name="$customField.id" type="text" value="$textutils.htmlEncode($!value)" /> 
#customControlFooter ($action $customField.id $fieldLayoutItem.fieldDescription  $displayParameters $auiparams) 

任何一個可以建議我應該如何更新此實現的CustomField和保護者不同的價值觀裏面附加字段,並得到總計爲。

回答

2

另一種方法是在客戶端生成字段。您可以將代碼添加到custom fields,這將添加所需的表單域。例如,添加2個簡單的輸入,使用下面的腳本:

<script type="text/javascript"> 
    var table = AJS.$('<table>').append(
      AJS.$('<tr>').append(
       AJS.$('<td>',{text:'first'}) 
      ).append(
       AJS.$('<td>',{class:'myinput'}).html(AJS.$('<input>')) 
      ) 
     ).append(
      AJS.$('<tr>').append(
       AJS.$('<td>',{text:'second'}) 
      ).append(
       AJS.$('<td>',{class:'myinput'}).html(AJS.$('<input>')) 
      ) 
     ); 
    AJS.$("input#customfield_10001").before(table) 
</script> 

創建一個小功能來獲取表單內容:

function collect_data() { 
    var content = AJS.$(".myinput input").map(function() {return this.value}); 
    var json = '{"first":"'+content[0]+'","second":"'+content[1]+'"}'; 
    AJS.$("input#customfield_10002").val(json); 
} 

最後,收集每一個變化的最新信息:

AJS.$(".myinput").on('input',function(){ 
    collect_data(); 
}); 

如果您決定使用此功能,請更新所有字段ID,根據需要修改輸入字段,然後添加更改表單創建代碼,以便使用您選擇的值填充輸入。

讓我知道你是否需要更多信息。

+0

下載,我們可以總和(總數)也可以顯示嗎?例如:我已經把文本inpu1 textinput 2,textinput 3放在一行和第二行,再三輸入,現在,在第三行,我需要前兩行輸入的總和。如何才能得到這樣的結果或摘要字段作爲最後一行。 – dsi

+0

當然可以,讀取值,例如'var x = parseInt(AJS。$(「。myinput input」));',將它們相加並將它們的值插入到所需的位置。 – Kuf

+0

謝謝@kuf你能否也請在另一個相關查詢中看到哪裏必須創建cascade月份年選擇器自定義字段:http://stackoverflow.com/questions/17270650/how-to-change-custom-field-date-picker顯示爲月份選擇器謝謝。 – dsi

2

Practical JIRA Plugins的第3章有一個在JIRA自定義字段中存儲多個值的工作示例。這個例子的源代碼可以在https://bitbucket.org/mdoar/practical-jira-plugins

+0

感謝這個教程鏈接,它非常有幫助。在這個多值例子中,擴展類型'AbstractCustomFieldType ,Carrier>'。我已經添加了「