how to make field read-only except certain project role and certain step at the same time?

For example, I have project roles: Developers, Users.
I want to make my field read-only except on step "In Progress" for Developers, and except on step "Open" for Users.
As a result: ("In Progress" AND Developers) OR ("Open" AND Users).
Help, please :)

7 answers

you can do it by using javascript? let me know if you want do it using JS so i can help you!!

I'm not sure that it will work excellent. But I'm ready to try.
How can I get projectrole and step using javascript?..

small clarification!

do you want field read only on transition screen or view screen?

only on Edit Screen..

the following script will run on edit screen

<script type="text/javascript">  
jQuery(document).ready(function($) {
JIRA.bind(JIRA.Events.NEW_CONTENT_ADDED, function (e,context) {
function makeReadonly(){
		var editFunction=$('#edit-issue-submit').val();
	if(editFunction === 'Update'){
        var user=getCurrentUserName();		
		var statusText=$('#status-val').text();	
		var status=$.trim(statusText);
		var devlopersRoleID='10010';//changr the project role id here
		var usersRoleID='10011';//changr the project role id here
		$("#customfield_10571").attr("readonly", '');
		$("#customfield_10572").attr("readonly", '');	
		if(isUserInGroup(user,devlopersRoleID) && status=='In Progress'){
			//to make text field read only
			$("#customfield_10571").attr("readonly", true);	
		}else if(isUserInGroup(user,usersRoleID) && status=='Open'){
			//to make text field read only
			$("#customfield_10572").attr("readonly", true);	

function getCurrentUserName()
var user;
        url: "/rest/gadget/1.0/currentUser",
        type: 'get',
        dataType: 'json',
        async: false,
        success: function(data) {
            user = data.username;
     return user;
function getUsers(roleID)
var users;
        url: "/rest/api/2/project/TEST/role/"+roleID,//change project Key here(need to replace TEST with your project key)
        type: 'get',
        dataType: 'json',
        async: false,
        success: function(data) {
            users =;
     return users;
function isUserInGroup(user, roleID){
    var users = getUsers(roleID);
    for (i = 0; i < users.length; i++){
         if (users[i].name == user){
              return true;
    return false;

wow, it looks nice! :)

And how can I get system fields? Duedate, assignee..

try with following code

//for dute field
$("#duedate").attr("readonly", true); 
//to hide date picker icon
/to show date picker icon

try with this for assignee field
$("#assignee-field").attr("readonly", true);

I guess function isUserInGroup(user, roleID) doesn't work.

Without this function all is ok..

check the REST API in isUserInGroup(user, roleID) function

Jira on demand?

0 vote
Joe Pitt Community Champion Nov 03, 2013

the behavior plug-in may offer that, but I don't know if you can have it installed.

Suggest an answer

Log in or Sign up to answer
How to earn badges on the Atlassian Community

How to earn badges on the Atlassian Community

Badges are a great way to show off community activity, whether you’re a newbie or a Champion.

Learn more
Community showcase
Published Thursday in Jira

Meet the AUG leaders of Northern Virginia

@Rachel Wright (Jira Genie), @Billy Poggi (AUG NOVA, DC), and @Dana Jansen (Confluence Queen) are just some of the folks that lead one of the world's most active Atlassian User Group (AUG)....

154 views 5 9
Read article

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you