The Issue
I discovered the other day that “g_form.removeOption()” does not work on variables on a Catalog Task or Requested Item form. It works great on fields, and nearly every other g_form function works great on variables, but removeOption, clearOption, and a few others simply refuse to work.
If someone from ServiceNow is reading this, please consider this a vote to spend an entire “named” release simply fixing stuff like this rather than pushing new functionality.
The “Fix”
Simply put, I wrote a function to handle this. Feel free to copy and paste and use!
Credit to Keith Mills for providing the seeds of this code here.
variableRemoveOption("variable_name", "choice_list_value");
//This is a workaround to avoid the issue of ServiceNow's bug
//in getControl when handling variables on Catalog Tasks and Requested Items
function variableRemoveOption(field, value) {
var handler = g_form.getPrefixHandler('v_dropdown');
var map = handler.handlerObject.nameMap;
var id;
for (i = 0; i < map.length; i++){
var name = map[i].prettyName;
if (name == field) {
id = map[i].realName;
break;
}
}
if(id) {
var elem = g_form.getElement(id);
var opts = elem;
for(var j=0; j<opts.length; j++) {
if(opts[j].value == value) {
elem.remove(j);
break;
}
}
}
}
Categories: Developers, Tips and Tricks
Leave a comment