- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-08-2018 02:29 PM
What I have set up here is when there are options in a choice list based upon the previous field choice then that field should become mandatory. So the user has to fill it in. Right now I am running this on onSubmit command, but when I change the choice list in the first field to something that doesn't have any other options in the other 2 fields, the fields stay mandatory even though there are no longer any options to choose from. Any ideas how I can modify my code so where the fields will be mandatory only if there are options in the fields?
I'm guessing I need to put g_form.setMandatory('subcategory',false); g_form.setMandatory('u_subcategory_2',false); somewhere.
https://community.servicenow.com/community?id=community_question&sys_id=eed5f94adb382f848e7c2926ca961917
Here's a link to my previous post about this to explain the category situation I am trying to set up.
function onSubmit() {
if(g_form.getValue("subcategory") == ""){//verify field names
var f1 = g_form.getControl("subcategory");
if(f1.options.length != 1 ){ //check if the dropdown has choices
g_form.setMandatory('subcategory',true);
g_form.addErrorMessage("The following mandatory fields are not filled in: Subcategory");
return false;
}
}
if(g_form.getValue("u_subcategory_2") == ""){//verify field names
var f2 = g_form.getControl("u_subcategory_2");
if(f2.options.length != 1 ){ //check if the dropdown has choices
g_form.setMandatory('u_subcategory_2',true);
g_form.addErrorMessage("The following mandatory fields are not filled in: Subcategory2");
return false;
}
}
}
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-26-2018 01:59 AM
Hey I ended up doing this: Thank you for the help
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
g_form.setMandatory('subcategory', false);
return;
}
var myVar;
myVar = setTimeout(alertFunc, 400);
}
function alertFunc() {
if(g_form.getValue("subcategory") == ""){//verify field names
var f1 = g_form.getControl("subcategory");
if(f1.options.length != 1 ){ //check if the dropdown has choices
g_form.setMandatory('subcategory',true);
return;
}
else{
g_form.setMandatory('subcategory', false);
return;
}
}
}

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-12-2018 08:27 AM
Depending on what you're trying to accomplish a UI Policy may be an easy, non scripting option
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-12-2018 08:29 AM
I was going to do this, but if a chosen value in the category field has options in the subcategory field I am trying to make subcat mandatory and do the same thing if subcategory creates options in subcategory2. I don't think this is possible with a UI policy.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-12-2018 08:44 AM
Understood.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-08-2021 06:05 AM
@Gassoway is correct if you have only a few fields you need to change - otherwise the script is the way to go. even in 2021 SNOW is very non-productive when it comes to performing actions on MANY variables/fields within the gui. the one thing i despise most about SNOW is the lack of performing one action across many items.
additionally @mark is correct that the OnChange is best because OnSubmit is waiting for you to submit.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-23-2018 02:37 AM
Hi ,
try below script,it will work perfectly..
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
setTimeout(setCatMandatory, 1000);}
function setCatMandatory() {
if (g_form.getValue("u_choice_2") == "") {//verify field names
var f1 = g_form.getControl("u_choice_2");
if (f1.options.length<2) {
g_form.setMandatory('u_choice_2',false);
}
else {
g_form.setMandatory('u_choice_2',true);
}
}
}
Mark correct or helpful if it helps you.
Warm Regards,
Pranay Tiwari
| www.DxSherpa.com | pranay.tiwari@dxsherpa.com |