- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-24-2020 12:05 PM
Hello,
I have a catalog client script that uses the onLoad() method to remove mandatory fields on a form load. There is one field that is a "Yes/No" type. If that field is set to "Yes" another field displays and is mandatory. My onLoad() script isn't making that field NOT mandatory. Any suggestions?
Below is what I am currently doing:
function onLoad() {
var ga = new GlideAjax('getUserInfo');
ga.addParam('sysparm_name', "isMemberOfGroup");
ga.getXMLAnswer(function(answer) {
if (answer.toString() == 'true') {
g_form.setMandatory('order_type', false);
g_form.setMandatory('order_date', false);
}
});
if (g_form.getValue('delivery_preference') == 'Yes') {
g_form.setMandatory('delivery_preferene_notes', false);
}
}
The part that is supposed to handle the onChange() are the last 2 lines:
if (g_form.getValue('delivery_preference') == 'Yes') {
g_form.setMandatory('delivery_preferene_notes', false);
}
Anything helps,
Thanks!
Solved! Go to Solution.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-24-2020 12:31 PM
Hi,
onLoad client script can not be used as onChange but onChange client script can be used as onLoad, So you just need to change your client script from onLoad to onChange and use the below modified script for you
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading) {
var ga = new GlideAjax('getUserInfo');
ga.addParam('sysparm_name', "isMemberOfGroup");
ga.getXMLAnswer(function(answer) {
if (answer.toString() == 'true') {
g_form.setMandatory('order_type', false);
g_form.setMandatory('order_date', false);
}
});
}
if(newValue===''){
return;
}
else if (g_form.getValue('delivery_preference') == 'Yes')
g_form.setMandatory('delivery_preferene_notes', false);
else
g_form.setMandatory('delivery_preferene_notes', true);
}
Kindly mark my answer as Correct and Helpful based on the Impact.
Regards,
Alok
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-24-2020 12:38 PM
There is already a UI Policy that sets all of our fields to mandatory for this particular catalog item. Will I have to remove the UI Policy in order for this to work? The other mandatory fields that are getting marked as false onLoad also have a UI policy that sets them to mandatory, but the catalog client script works for those fields

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-24-2020 01:18 PM
Just remove the UI POlicy action for the same field which you want to handle in client script from the ui policy. Also, make sure that the mandatory checkbox is unchecked in the variable.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-25-2020 01:18 PM
So I tried that, and it still did not work. The field that we are setting as Mandatory is supposed to be a hidden field that only displays if the answer to a Previous question is Yes. This makes the field display after a response is selected and regardless of the answer to the question. I believe it is because a mandatory field cannot be hidden outside of a UI Policy Action as it is requierd. That's just my guess

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-25-2020 01:51 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-25-2020 02:09 PM
Okay so now I finally got it to set mandatory from the script, but it is setting the fields to mandatory for all users. I need it to only be mandatory for certain users when the field changes. Also, how do you reverse if false?