Client Script - How to Change Dependent Field to '--None--'

Laurie Marlowe1
Kilo Sage

Hello,

We have two fields, T-Shirt Size and Governance.   When T-Shirt Size is set to a size, then the value of the Governance field changes.

For example, I select M-Medium for T-Shirt Size, and Governance changes to team.   This works fine for any T-Shirt Size I choose, except '--None--'.

Capture.JPG

When I change T-Shirt Size to '--None--', I want Governance to be set to '--None--'.

Capture2.JPG

I tried a variety of things, including removing "Dropdown with --None--" from the dictionary entry for both fields, and adding "--None--" as a choice.   This works, but then I cannot set the T-Shirt Size to mandatory, because the "--None--" choice is a valid selection, in this case.

Here is the script.   I also tried if(newValue == '--None--'), and that did not work either.

function onChange(control, oldValue, newValue, isLoading, isTemplate) {

if (isLoading || newValue === '') {

return;

}

if (newValue != oldValue){

if (newValue == ''){

g_form.setValue('u_governance','');

}

if (newValue == 'small'){

g_form.setValue('u_governance','team');

}

if (newValue == 'medium'){

g_form.setValue('u_governance','team');

}

if (newValue =='large'){

g_form.setValue('u_governance','portfolio');

}

if (newValue == 'xlarge'){

g_form.setValue('u_governance','enterprise');

}

if (newValue == 'xxlarge'){

g_form.setValue('u_governance','enterprise');

}

}

return;

}

Thank you in advance,

Laurie

1 ACCEPTED SOLUTION

Reply from email… Try this instead since switch statements are a little easier to read and manage than a bunch of If statatement…



function onChange(control, oldValue, newValue, isLoading, isTemplate) {



if (isLoading) {


return;


}



var govValue = "";


switch (newValue.toString()) {


case '':


govValue = "";


break;


case 'small':


govValue = "team";


break;


case 'medium':


govValue = "portfolio";


break;


case 'large':


govValue = "";


break;


case 'xlarge':


govValue = "enterprise";


break;


case 'xxlarge':


govValue = "enterprise";


break;


}


g_form.setValue('u_governance', govValue);


}


View solution in original post

11 REPLIES 11

Ah just realized this is your issue:


if (isLoading || newValue === '') {


      return;


}



The script is bailing of newValue is null!   Change to:


if (isLoading) {


      return;


}


Still won't work




function onChange(control, oldValue, newValue, isLoading, isTemplate) {



if (isLoading) {



return;



}




if (newValue != oldValue){



if (newValue === ""){



g_form.setValue('u_governance',"");



}




if (newValue == 'small'){



g_form.setValue('u_governance','team');



}



if (newValue == 'medium'){



g_form.setValue('u_governance','team');



}



if (newValue =='large'){



g_form.setValue('u_governance','portfolio');



}



if (newValue == 'xlarge'){



g_form.setValue('u_governance','enterprise');



}



if (newValue == 'xxlarge'){



g_form.setValue('u_governance','enterprise');



}





}



return;



}





Laurie Marlowe


Test reply, keep getting error replying.


Me too. For some reason, the only way I can save a response to the thread is via responding to the email.




Anyway, I figured it out! I needed to remove/comment out this:




//if (newValue != oldValue){




Laurie


Well I keep getting an error replying with new code.   I suggest you use a Switch/Case statement instead of all the If statements.