Show info message on the catalog form based on the value on the field
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-07-2025 12:24 AM
Hi All,
We have requirement to show an info message on the catalog form when user selects the value.
On catalog form we have a text field named as incidentnumber. When user enters the incident number it should search the incident table and check if the number is vaild or not. If the number is valid and available in incident table we need to throw a message like number is valid and if number is not in the table we need to throw a message like number is invalid.
I have tried by creating the catalog client script and script include but when I tried to test with the valid incident number it is throwing invalid number message.
Can anyone please help in the script where I am doing wrong
Please find the script below
Catalog client script:
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
var incidentNumber = g_form.getValue('incident_number');
var ga = new GlideAjax('ValidateIncident');
ga.addParam('sysparm_incident_number', incidentNumber);
ga.addParam('sysparm_name', 'validationIn');
ga.getXMLAnswer(HelloWorldParse);
function HelloWorldParse(answer) {
var result = JSON.parse(answer);
answer = response.responseXML.documentElement.getAttribute("answer");
if (answer == result) {
g_form.addInfoMessage("Incident Number is valid.");
} else {
g_form.addErrorMessage("Invalid Incident Number.");
}
}
}
Script Include:
ValidateIncident.prototype = {
validationIn: function() {
var incidentNumber = this.getParameter('sysparm_incident_number');
var gr = new GlideRecord('incident');
gr.addQuery('active', true);
gr.addQuery('number', incidentNumber);
gr.query();
while(gr.next()) {
var results = {
"number": gr.getValue('number'),
"date": gr.getValue('sys_created_on')
};
return JSON.stringify(results);
}
},
type: 'ValidateIncident'
};
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-07-2025 12:59 AM - edited ‎03-07-2025 01:03 AM
Hi @sriramsaishasha
You can try the below-mentioned code:
Client script (onChange of Incident Number field)
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
var ga = new GlideAjax('global.ScriptInclude'); //replace the SI name with your SI name
ga.addParam('sysparm_name', 'validationIn');
ga.addParam('sysparm_incident_number', newValue);
ga.getXML(echoCallBack); //use getXML instead of getXMLAnswer
function echoCallBack(response) {
var answer = response.responseXML.documentElement.getAttribute('answer');
alert(answer);
}
}
validationIn: function() {
var incidentNumber = this.getParameter('sysparm_incident_number');
var gr = new GlideRecord('incident');
gr.addQuery('active', true);
gr.addQuery('number', incidentNumber);
gr.query();
if(gr.next()){
return 'valid'; //This will retunr the VALID if the incident number is already there
}else
return 'invalid';
},
Please mark this as a solution and helpful if this resolves your query.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-07-2025 11:29 AM
Hi @sriramsaishasha Please mark the reply as solution and helpful if this resolves your query.
Thanks!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-07-2025 01:02 AM
You code is not correct. You don't need to use JSON object in script include just return true. Since you don't want any multiple attributes of an incident record. And in client script you don't Have to use "response.responseXML.documentElement.getAttribute" since you are use getXMLAnswer.
Catalog client script:
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
var incidentNumber = g_form.getValue('incident_number');
var ga = new GlideAjax('ValidateIncident');
ga.addParam('sysparm_incident_number', incidentNumber);
ga.addParam('sysparm_name', 'validationIn');
ga.getXMLAnswer(HelloWorldParse);
function HelloWorldParse(answer) {
var result = answer; //
g_form.addInfoMessage("Response from Script Include" + answer); // To debug later you can comment
if (answer == true) {
g_form.addInfoMessage("Incident Number is valid.");
} else {
g_form.addErrorMessage("Invalid Incident Number.");
}
}
}
Script Include:
ValidateIncident.prototype = {
validationIn: function() {
var incidentNumber = this.getParameter('sysparm_incident_number');
var gr = new GlideRecord('incident');
gr.addQuery('active', true);
gr.addQuery('number', incidentNumber);
gr.query();
while(gr.next()) {
return true;
};
}
},
type: 'ValidateIncident'
};
If my response helped, please mark it helpful and accept the solution so that it benefits future readers.
Regards,
Rohit
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-08-2025 12:55 AM
Hi @sriramsaishasha ,
Did you tried my code mentioned above.
If my response helped, please mark it helpful and accept the solution so that it benefits future readers.
Regards,
Rohit