Mandate the field based on the particular keyword in the List type fiedl
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-15-2024 07:33 PM
Hello Community,
we have list collector variable on the catalog item and where user can select multiple values and We are looking for the way if particular keyword identified then another variable need to make mandatory. We have below code and it's not working can anyone help where we are missing the logic?
Client Script :--------------------
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-15-2024 09:19 PM
Hi @Nagesh5 Try below code
Client Script
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
var ga = new GlideAjax('checkUser');
ga.addParam('sysparm_name', 'getUsers');
ga.addParam('sysparm_value', newValue); // newValue is the selected value(s)
ga.getXMLAnswer(userCheck);
function userCheck(answer) {
if (answer.includes("albert")) {
g_form.setMandatory('Requester', true);
} else {
g_form.setMandatory('Requester', false);
}
}
}
Script Include
var checkUser = Class.create();
checkUser.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getUsers: function() {
var checkValues = this.getParameter('sysparm_value');
var valuesArray = checkValues.split(',');
var arrRoles = [];
for (var i = 0; i < valuesArray.length; i++) {
var croles = new GlideRecord('sys_user');
croles.addQuery('sys_id', valuesArray[i].trim());
croles.query();
if (croles.next()) {
arrRoles.push(croles.getDisplayValue().toString());
}
}
return arrRoles.join(',');
},
type: 'checkUser'
});
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-15-2024 10:30 PM
Thanks for the response and it's not working
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-15-2024 10:49 PM
Hi @Nagesh5 ,
I tried your problem in my PDI please check script below
Client Script
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
//Type appropriate comment here, and begin script below
// var user = g_form.getValue("additional_assignee_list");
var ga = new GlideAjax("checkUser");
ga.addParam("sysparm_name", "getUsers");
ga.addParam("sysparm_value", newValue);
alert("HERE IN CS = " + newValue);
ga.getXML(userCheck);
function userCheck(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
//var ouput = JSON.parse(answer);
if (answer.includes("albert")) {
g_form.setMandatory("Requester", true);
}
}
}
Script Include
getUsers: function() {
gs.log("Hree in script inc");
var checkValues = this.getParameter("sysparm_value");
var arr = checkValues.split(",");
var arrRoles = [];
gs.log("arrarr = " + arr);
gs.log("CHECK USER = " + checkValues);
for (var i = 0; i < arr.length; i++) {
gs.log("INSIDE FOR = " + arr[i]);
var croles = new GlideRecord('sys_user');
croles.addQuery('sys_id', arr[i]);
croles.query();
if (croles.next()) {
gs.log("*******Users" + croles.getDisplayValue());
arrRoles.push(croles.getDisplayValue().toString());
}
}
gs.log("CHeck arrRoles = "+ arrRoles);
return arrRoles.toString();
},
Result
Please mark my answer correct and helpful if this works for you
Thanks and Regards
Sarthak
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-15-2024 10:58 PM - edited 08-15-2024 10:59 PM
Perfect!!!! ,But if i remove that value from list collector still it's showing mandatory that field and also can we add two more if conditions two check two more keywords from answer variable?