Onchange Client script is not working in workspace

XYD23
Tera Contributor

Below on change client script is working fine on the form level, but its not working on the workspace level.
Can anyone help me on this please?

Client script:

XYD23_0-1705916075388.pngXYD23_1-1705916096160.png

 

1 ACCEPTED SOLUTION

Hi @XYD23 

 

Follow below steps :

 

Step 1 : Create client callable script include

Name : TechTaskUtils

 

 

var TechTaskUtils = Class.create();
TechTaskUtils.prototype = Object.extendsObject(AbstractAjaxProcessor, {

   /* Function */
	getTechTaskDetails : function(){
	/*1. Declare & initialize necessary variables/JSON  */	
	var result = {
		'title' :'',
		'assigned_to' : '',
		'due_date' :''
	};
    
	/*2.Get newValue (sys_id) from client script */
	var getSysId = this.getParameter('sysparm_sysID');
    
	/*3. Glide record on your table */
	var grTech = new GlideRecord('u_tech_task');
	grTech.addQuery('sys_id',getSysId);
	grTech.query();
    
	if(grTech.next()){

		/*3.1 Set JSON object */
		result.title = grTech.getValue('u_title');
		result.assigned_to = grTech.getValue('u_assigned_to');
		result.due_date = grTech.getValue('u_due_date');
          
	}
   
   /*4.Stringify result & return it */
   return JSON.stringify(result);

	},

    type: 'TechTaskUtils'
});

 

 

VishalBirajdar_0-1705926833521.png

 

Step 2 : Write onChange Client script 

 

 

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
   if (isLoading || newValue === '') {
      return;
   }

   /*1. Call Script include using GlideAjax */
   var ga = new GlideAjax('TechTaskUtils');  //script include name
   ga.addParam('sysparm_name','getTechTaskDetails');  //function name within script include
   ga.addParam('sysparm_sysID',newValue);   //pass the value to script incldue

   ga.getXMLAnswer(callBackFunction);

   function callBackFunction(answer){

	/* here we will get the result from script include & Parse the answer */
	var result = JSON.parse(answer);

	/* Set value on form */

	g_form.setValue('u_title',result.title);
	g_form.setValue('u_assigned_to',result.assigned_to);
	g_form.setValue('u_due_date',result.due_date);

   }
 
}

 

 

Hope this helps...!!!

 

 

Vishal Birajdar
ServiceNow Developer

I know one thing, and that is that I know nothing.
- Socrates

View solution in original post

16 REPLIES 16

Thanks, its working.

Anil Lande
Kilo Patron

Hi @XYD23 

You can use GlideAjax or getReference method.

If you need data related with reference field then you can prefer getReference instead of GlideRecord.

Sharing how it can be done with getReference().

 

 

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
   if (isLoading || newValue === '') {
      return;
   }
   var techList =g_form.getReference('u_tech_list', callback); // name of your field
// below is callback function
   function callback(techList){
	g_form.setValue('u_title',techList.u_title);
	g_form.setValue('u_assigned_to',techList.u_assigned_to);
	g_form.setValue('u_due_date',techList.u_due_date);
   }
}

 

 

 

Please appreciate the efforts of community contributors by marking appropriate response as correct answer and helpful, this may help other community users to follow correct solution in future.
Thanks
Anil Lande