2015-04-15 44 views
4

我爲JIRA實例編寫了一些Javascript,當創建問題時會自動填充字段。如果我在新窗口中打開「創建問題」屏幕,它的工作方式與預期相同。 但是,當「創建問題」出現在對話框中時,我的腳本無法運行。 當在窗口中打開「創建問題」對話框屏幕時,如何啓用腳本運行? 下面是我的代碼:JQuery在對話框加載時運行Javascript

/* 
* Automatically fills the summary field of an issue and hides the field at issue creation. 
*/ 

jQuery(document).ready(function($) { 

JIRA.bind(JIRA.Events.NEW_CONTENT_ADDED, function (e,context) { 
    autoFillSummary(); 
}); 

autoFillSummary(); 

// Automatically fill the summary field with a default value. 
function autoFillSummary(){ 
    var issueType = $('#issue-create-issue-type').text(); 
    var reporter = $('#reporter').val(); 
    var d = new Date(); 
    d = d.toDateString(); 
    var summaryVal = reporter + " - " + "[ " + d + " ]"; 
    if(issueType === "Job"){ 
     $('#summary').val(summaryVal); 
     $('#summary').closest('div.field-group').hide(); 
     $('#reporter').closest('div.field-group').hide(); 
    } 
} 

}); 

的對話框中的ID是創建-問題的對話中 預先感謝您的任何幫助,您可以提供給我。

回答

3

我會做這種方式:

jQuery(document).ready(function($) { 

    $('#create-issue-dialog').dialog({ 
    autoOpen: false, 
    open: function(event, ui) { 
     JIRA.bind(JIRA.Events.NEW_CONTENT_ADDED, function(e, context) { 
     autoFillSummary(); 
     }); 
    } 
    }); 

    // Automatically fill the summary field with a default value. 
    function autoFillSummary() { 
    var issueType = $('#issue-create-issue-type').text(); 
    var reporter = $('#reporter').val(); 
    var d = new Date(); 
    d = d.toDateString(); 
    var summaryVal = reporter + " - " + "[ " + d + " ]"; 
    if (issueType === "Job") { 
     $('#summary').val(summaryVal); 
     $('#summary').closest('div.field-group').hide(); 
     $('#reporter').closest('div.field-group').hide(); 
    } 
    } 
}); 

我沒有使用過JIRA。

+0

這似乎不是解決方案,但感謝您的幫助和快速響應。 – MasterDex

0

我還沒能找到一個理想的解決方案,但作爲一個工作的時候,我已經能夠出現並迫使屏幕加載到一個新的頁面禁用對話框:

/* 
* Automatically fills the summary field of an issue and hides the field at issue creation. 
*/ 

jQuery(document).ready(function($) { 

// Disable pop-up window - Forces 'Create Issue' to load in new page. 
AJS.$("#create_link").removeClass("create-issue"); 

autoFillSummary(); 

// Automatically fill the summary field with a default value. 
function autoFillSummary(){ 
    var issueType = AJS.$('#issue-create-issue-type').text(); 
    var reporter = AJS.$('#reporter').val(); 
    var d = new Date(); 
    d = d.toDateString(); 
    var summaryVal = reporter + " - " + "[ " + d + " ]"; 
    if(issueType === "Job"){ 
     AJS.$('#summary').val(summaryVal); 
     AJS.$('#summary').closest('div.field-group').hide(); 
     AJS.$('#reporter').closest('div.field-group').hide(); 
    } 
} 
}); 

如果有人想出一種避免禁用對話框的方法,將不勝感激。

0
AJS.toInit(function() { 
    autoFillSummary(); 
}); 

JIRA.bind(JIRA.Events.NEW_CONTENT_ADDED, function (e,context) { 
    autoFillSummary(); 
}); 

// Automatically fill the summary field with a default value. 
function autoFillSummary(){ 
    var issueType = $('#issue-create-issue-type').text(); 
    var reporter = $('#reporter').val(); 
    var d = new Date(); 
    d = d.toDateString(); 
    var summaryVal = reporter + " - " + "[ " + d + " ]"; 
    if(issueType === "Job"){ 
     $('#summary').val(summaryVal); 
     $('#summary').closest('div.field-group').hide(); 
     $('#reporter').closest('div.field-group').hide(); 
    } 
} 

嘗試添加AJS.toInit(function(){...});它以創建問題的形式運行腳本