We've updated the ServiceNow Community Code of Conduct, adding guidelines around AI usage, professionalism, and content violations. Read more

Math.abs not working in onChange Client Script

Phong Lo
Tera Guru

I'm developing a client script in my PDI on the Incident Table. When a user changes the state to canceled (value = 8), then currency 1 field gets auto populated with the absolute value of currency 2 field. Screenshot below:

PhongLo_0-1707260971116.png

Below is my Client Script that I'm using that works because it is auto populating the value, but not the absolute value. When I add Math.abs(), what's returning is NaN. So I commented that code out. Any idea what I'm doing wrong?

PhongLo_1-1707261318189.png

 

Much thanks!

1 ACCEPTED SOLUTION

Updated and working Script:

 

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
    if (isLoading || newValue === '') {
        return;
    }
    var abc = Math.abs(parseFloat(g_form.getValue('u_currency_type').split(';')[1].replace(/,/g, "")));
    alert(abc);
	g_form.setValue('u_cur','USD'+';'+abc);

}

 

View solution in original post

13 REPLIES 13

Hello @Phong Lo ,

Could you please upload the screenshot of latest changes. Then we may get some idea about the problem.

 

Thank you

 

Please mark my answer helpful  & correct if it helps you
Thank you

G Ramana Murthy
ServiceNow Developer

Sure. Here are the latest changes:

PhongLo_0-1707318641961.png

Hello @Phong Lo ,

you can try this

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
   if (isLoading || newValue === '') {
      return;
   }
	var currency_2_value = g_form.getValue('u_currency_2').split(';');

	var absoluteValue = Math.abs(parseFloat(currency_2_value[1]));

	alert(absoluteValue);
   //Type appropriate comment here, and begin script below
   
}

currency field returns value as USD;-75.46 format. So we are splitting the value using ; (semicolon)

 

Please mark my answer as helpful, if it helps you

Thank you

 

 

Please mark my answer helpful  & correct if it helps you
Thank you

G Ramana Murthy
ServiceNow Developer

For some reason, my Math.abs() isn't working. It's still bringing up the value as NaN. Once I remove the Math.abs(), the value is -XX.XX, but not the absolute value.

Hello @Phong Lo ,

Please try above code, its working.

 

Math.abs() returns NaN, why because Currency field returns value as a USD;-xx:xx format. if we parse that value it returns NaN. So that we are splitting the value using semicolon (;) and taken part value which is at index 1 (USD at in index 0 and -xx:xx value at index 1).

 

Please mark my answer helpful  & correct if it helps you
Thank you

G Ramana Murthy
ServiceNow Developer