Help with simple onChange script to populate one field, based on another

Zhivko
Kilo Expert

Hi, I am trying to setup a dependency between 2 string fields on one of our forms (change_request table if that matters)

I tried a few things based on what i found here in the community, but unsuccessfully.

This is the most basic thing I could come up with and even that did not work.

I am setting the field name that this is supposed to apply to to Category.

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

if (g_form.getValue('category') == 'Systems')
g_form.setValue('u_responsible', 'Jack');

if (g_form.getValue('category') == 'Networks')
g_form.setValue('u_responsible', 'Sam');

 

 

 

1 ACCEPTED SOLUTION

simonbergstedt
Tera Guru

Do you get the values you want if you just print them out in a g_form.addInfoMessage like

var cat = g_form.getValue('category');
var responsible = "";
if(cat == 'Systems';
{
responsible = "Jack";
}
else if(cat == 'Networks')
{
responsible = "Sam";
}

g_form.addInfoMessage("Category is " + cat + " so the responsible person is " + responsible;

 

I find that it always helps out when troubleshooting things like this

View solution in original post

15 REPLIES 15

Mark Stanger
Giga Sage

Is 'u_responsible' a reference field?  If so, you'll want to use 'setDisplayValue' to set the friendly name instead of the sys_id.

g_form.setDisplayValue('u_responsible', 'Sam');

Allen Andreas
Administrator
Administrator

need to use getDisplayValue unless the value in the back-end is specifically saying 'Systems'. It is case sensitive.

And then your set value to the exact value (not display value).

You don't have brackets either...and so you could do it like this:

if (newValue == 'Systems'){
g_form.setValue('u_responsible', 'Jack');
}

You've already chosen the field on the client script, so now you can tap in to newValue

Need to look in to DisplayValue script


Please consider marking my reply as Helpful and/or Accept Solution, if applicable. Thanks!

Zhivko
Kilo Expert

Ok - both fields are strings, so then setDisplayValue should not be necessary, based on what you both say.

I just made the corrections Allen outlined, but that does not seam to change anything. Does it make a difference that the u_responsible field has pre-defined choices?

find_real_file.png

 

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

if (g_form.getValue('category') == 'Systems')
g_form.setValue('u_responsible', 'Jack');

if (g_form.getValue('category') == 'Networks')
g_form.setValue('u_responsible', 'Sam');

}

 

Regards,

Sachin