Show/Hide choices on field depending on which group the user is member of

Floridalife
Giga Expert

I am trying to hide some of the choice in a reference type field depending on which group the user is part of, at first i was trying to filter it based on what the u_assignment_group field was set to on the form, this is the client script i was   using but it didnt work (even tried SysID for the group), if this is the recommended way can you advise what looks wrong in the code?

function onChange() {

var sta = g_form.getValue('u_assignment_group');//get the value of state  

//var cat = g_form.getValue('category');//get the value of category  

//var com = g_form.getValue('company');//get the value of company  

  if (u_assignment_group == "8dd9bdaa37c45e009325dcc773990e25" || u_assignment_group == "SA" || u_assignment_group == "INF")/*if state is resolved AND category is Inventory AND company is HQ, then:*/   {  

      //now populate the choices:  

      g_form.addOption('call_type', 'Option 1', 'Option 1', 1);  

      //g_form.addOption('call_type', 'Option 2', 'Option 2', 2);  

      //g_form.addOption('call_type', 'Option 3', 'Option 3', 3);//etc...  

  }   }

Then i started playing with the dependent field but we have a handful of teams and i was forced to duplicate the choice for each team and use the sysid, very time consuming and messy, is there a better way ?

2016-06-08 16_40_09-ServiceNow.png

1 ACCEPTED SOLUTION

Pradeep Sharma
ServiceNow Employee
ServiceNow Employee

HI Mathieu,




I see that you are not fetching the value of assignment group field i.e you should use


var assignment = g_form.getValue('u_assignment_group');


now in your if loop replace compare it based on assignment and also I see that other loops you have used assignment group display value and it should be sys_id.



var assignment = g_form.getValue('u_assignment_group'); //will return sys_id


var assignment = g_form.getDisplayBox('u_assignment_group').value; //will return display value


View solution in original post

26 REPLIES 26

Gotcha was missing the else, tried it though and still no luck,



picture below is what im trying to do, when the user add the group ISS or SA or INF to the group field, it would add the REQUEST choice under CALL TYPE field



2016-06-09 09_45_22-ServiceNow.png



2016-06-09 09_47_48-ServiceNow.png


I'm wondering if that return is not tripping it up.   Remove that and see what happens.


Still no go, it does remove it fine but doesnt add it when ISS is added to Group field, is onChange adequate?


ANother approach would be to check what group the currently logged on user is a member of, if ISS/SA/INF then show the choice, what would the script be like in that case?



This is how it looks after removing return



function onChange() {


  var group = g_form.getDisplayBox('u_assignment_group');//get the value of group


  //var cat = g_form.getValue('category');//get the value of category


  //var com = g_form.getValue('company');//get the value of company


  if (group == "ISS" || group == "SA" || group == "INF")/*if group is SA OR ISS OR INF, then:*/   {


  //now populate the choices:


  g_form.addOption('call_type', 'sc_request', 'Request', 1);


  //g_form.addOption('call_type', 'Option 2', 'Option 2', 2);


  //g_form.addOption('call_type', 'Option 3', 'Option 3', 3);//etc...


  }else{


  g_form.removeOption('call_type', 'sc_request');


  }


}


You would have to do that using GlideAjax.   It's doable, but this should be working, so let's crack on here.


Got it.   It is a reference field.   It does not like getDisplayBox.   Try this:



function onChange() {


  var group = g_form.getReference('assignment_group', hideStuff);//get the value of group


  //var cat = g_form.getValue('category');//get the value of category


  //var com = g_form.getValue('company');//get the value of company


  function hideStuff(group){


            if (group.name == "ISS" || group.name == "SA" || group.name == "INF")/*if group is SA OR ISS OR INF, then:*/   {


                      //now populate the choices:


                      g_form.addOption('subcategory', 'sc_request', 'Request', 1);


                      //g_form.addOption('call_type', 'Option 2', 'Option 2', 2);


                      //g_form.addOption('call_type', 'Option 3', 'Option 3', 3);//etc...


            }else{


                      g_form.removeOption('subcategory', 'sc_request');


            }


    }


}