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 01:14 AM
Will users remember the incident number?
Why not use reference variable pointing to incident table?
update as this in your current requirement
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(function(answer) {
if (answer == 'valid') {
g_form.addInfoMessage("Incident Number is valid.");
} else {
g_form.addErrorMessage("Invalid Incident Number.");
}
});
}
Script Include: It should be client callable. Your script include is not client callable
var ValidateIncident = Class.create();
ValidateIncident.prototype = Object.extendsObject(AbstractAjaxProcessor, {
validationIn: function() {
var incidentNumber = this.getParameter('sysparm_incident_number');
var gr = new GlideRecord('incident');
gr.addActiveQuery();
gr.addQuery('number', incidentNumber);
gr.query();
if (gr.hasNext()) {
return 'valid';
} else {
return 'invalid';
}
},
type: 'ValidateIncident'
});
If my response helped please mark it correct and close the thread so that it benefits future readers.
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-07-2025 11:32 PM
Hope you are doing good.
Did my reply answer your question?
If my response helped please mark it correct and close the thread so that it benefits future readers.
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader