- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎11-02-2016 10:06 AM
- I have a UI policy for one of the reference field. If the value of the reference field is "Other", then show/hide another field. In the UI policy, by default it takes the SysID for the value "Other" rather than the value itself. So everytime, I reload the data , the SysID for the value "Other" is getting changed and the UI policy fails.
Can we force the reference field to take value rather than the sysID.. ?
There is no related fields appear for the particular column...
Solved! Go to Solution.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎11-02-2016 01:26 PM
Use GlideAjax. Here is the onload and onchange scripts and script include. In my case, if the watch list contains system administrator, show description field or else hide it. Make changes according to your fields and table.
onLoad:
function onLoad() {
var ga = new GlideAjax('DisplayUtil');
ga.addParam('sysparm_name','checkList');
ga.addParam('sysparm_id',g_form.getValue('watch_list'));
ga.getXML(CallBack);
function CallBack(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
if(answer=='true'){
g_form.setDisplay('description',true);
}
else{
g_form.setDisplay('description',false);
}
}
}
onChange:
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
var ga = new GlideAjax('DisplayUtil');
ga.addParam('sysparm_name','checkList');
ga.addParam('sysparm_id',newValue);
ga.getXML(CallBack);
function CallBack(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
if(answer=='true'){
g_form.setDisplay('description',true);
}
else{
g_form.setDisplay('description',false);
}
}
//Type appropriate comment here, and begin script below
}
Script Include:
Name:DisplayUtil
client callable:true
script:
var DisplayUtil = Class.create();
DisplayUtil.prototype = Object.extendsObject(AbstractAjaxProcessor, {
checkList: function(){
var gr= new GlideRecord('sys_user');
gr.addQuery('sys_id','IN',this.getParameter('sysparm_id'));
gr.query();
while(gr.next()){
if(gr.name=='System Administrator')
return true;
}
return false;
},
type: 'DisplayUtil'
});

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎11-02-2016 12:06 PM
Use this in a client side code
if(g_form.getControl('<field name goes here>').previousSibling.innerHTML.indexOf('Other')>-1){
g_form.setDisplay('field name',true);
}
else{
g_form.setDisplay('field name',false);
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎11-02-2016 12:08 PM

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎11-02-2016 12:13 PM
Yes create both. You can also do both of them in a single onChange scrip too.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎11-02-2016 12:19 PM
During OnChange, the below one
g_form.getControl('<field name goes here>').previousSibling.innerHTML.
holds the current values only and not the newly selected value.
So the condition fails..

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎11-02-2016 01:26 PM
Use GlideAjax. Here is the onload and onchange scripts and script include. In my case, if the watch list contains system administrator, show description field or else hide it. Make changes according to your fields and table.
onLoad:
function onLoad() {
var ga = new GlideAjax('DisplayUtil');
ga.addParam('sysparm_name','checkList');
ga.addParam('sysparm_id',g_form.getValue('watch_list'));
ga.getXML(CallBack);
function CallBack(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
if(answer=='true'){
g_form.setDisplay('description',true);
}
else{
g_form.setDisplay('description',false);
}
}
}
onChange:
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
var ga = new GlideAjax('DisplayUtil');
ga.addParam('sysparm_name','checkList');
ga.addParam('sysparm_id',newValue);
ga.getXML(CallBack);
function CallBack(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
if(answer=='true'){
g_form.setDisplay('description',true);
}
else{
g_form.setDisplay('description',false);
}
}
//Type appropriate comment here, and begin script below
}
Script Include:
Name:DisplayUtil
client callable:true
script:
var DisplayUtil = Class.create();
DisplayUtil.prototype = Object.extendsObject(AbstractAjaxProcessor, {
checkList: function(){
var gr= new GlideRecord('sys_user');
gr.addQuery('sys_id','IN',this.getParameter('sysparm_id'));
gr.query();
while(gr.next()){
if(gr.name=='System Administrator')
return true;
}
return false;
},
type: 'DisplayUtil'
});