- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-20-2025 10:21 PM
Hi,
I have two fields on a catalog form:
Requested for - which auto populates for logged in user
request on behalf - this is used to submit request for some other person.
Requirement: If either of them doesn't have a active manager, then a error message should be poped up while submitting the form.
I tried onSubmit with GlideAjax, but it did not.
Can you help with code.
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-20-2025 10:44 PM - edited 07-20-2025 10:47 PM
HI @rohitreddy ,
try this
Client script
    function onSubmit() {
        if (g_scratchpad.isFormValid)
            return true;
        var actionName = g_form.getActionName();
        var userID = g_form.getValue('requested_for') || g_form.getValue('request_on_behalf_of') || g_user.userID;
        var ga = new GlideAjax('CheckUserManager');
        ga.addParam('sysparm_name', 'hasManager');
        ga.addParam('sysparm_user_id', userID);
        ga.getXMLAnswer(callBackFunc);
        callBackFunc(function(answer) {
            if (answer == 'false' || answer == false) {
                alert("This request requires manager approval, but no manager is currently assigned to the user profile. Please contact the Service Desk team before submitting this request.");
                return false;
            }
            g_scratchpad.isFormValid = true;
            g_form.submit(actionName);
        });
        return false;
    }
script include (you have mentioned active manager you are not checking active or not)
var CheckUserManager = Class.create();
CheckUserManager.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    hasManager: function() {
        var userID = this.getParameter('sysparm_user_id');
        if (!userID) return false;
        var userGR = new GlideRecord('sys_user');
        if (userGR.get(userID)) {
            return userGR.manager && userGR.manager.active; //check manager is active or not
        }
        return false;
    }
});
Please mark my answer as helpful/correct if it resolves your query.
Regards,
Chaitanya
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-20-2025 10:55 PM
function onSubmit() {
    // Validation for manager presence
    if (g_scratchpad.isFormValid)
        return true;
    var actionName = g_form.getActionName();
    var userID = g_form.getValue('requested_for') || g_form.getValue('request_on_behalf_of') || g_user.userID;
    var ga = new GlideAjax('CheckUserManager');
    ga.addParam('sysparm_name', 'hasManager');
    ga.addParam('sysparm_user_id', userID);
    ga.getXMLAnswer(callBack);
    function callBack(answer) {
        var hasManager = answer;
        if (hasManager == 'false') {
            alert("This request requires manager approval, but no manager is currently assigned to the user profile. Please contact the Service Desk team before submitting this request.");
            return false;
        }
        g_scratchpad.isFormValid = true;
        g_form.submit(actionName);
    }
    return false;
}- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-20-2025 10:25 PM
Hi @rohitreddy ,
you can refer this support article and make changes to user script
https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB0779964
if you are still having any issues please share yours script here
Please mark my answer as helpful/correct if it resolves your query.
Regards,
Chaitanya
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-20-2025 10:34 PM
I am using below setup:
Script Inlcude:
This is not working....
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-20-2025 10:44 PM - edited 07-20-2025 10:47 PM
HI @rohitreddy ,
try this
Client script
    function onSubmit() {
        if (g_scratchpad.isFormValid)
            return true;
        var actionName = g_form.getActionName();
        var userID = g_form.getValue('requested_for') || g_form.getValue('request_on_behalf_of') || g_user.userID;
        var ga = new GlideAjax('CheckUserManager');
        ga.addParam('sysparm_name', 'hasManager');
        ga.addParam('sysparm_user_id', userID);
        ga.getXMLAnswer(callBackFunc);
        callBackFunc(function(answer) {
            if (answer == 'false' || answer == false) {
                alert("This request requires manager approval, but no manager is currently assigned to the user profile. Please contact the Service Desk team before submitting this request.");
                return false;
            }
            g_scratchpad.isFormValid = true;
            g_form.submit(actionName);
        });
        return false;
    }
script include (you have mentioned active manager you are not checking active or not)
var CheckUserManager = Class.create();
CheckUserManager.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    hasManager: function() {
        var userID = this.getParameter('sysparm_user_id');
        if (!userID) return false;
        var userGR = new GlideRecord('sys_user');
        if (userGR.get(userID)) {
            return userGR.manager && userGR.manager.active; //check manager is active or not
        }
        return false;
    }
});
Please mark my answer as helpful/correct if it resolves your query.
Regards,
Chaitanya
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-20-2025 10:36 PM - edited 07-20-2025 10:37 PM
Hello @rohitreddy, If you'd like to validate the values on submission then you can try below once. it should be On Submit Client Script
    function onSubmit() {
	if ( g_form.getValue('requested_for_field') ||  g_form.getValue('requested_on_behalf') )
            g_form.addErrorMessage('value of either Requested for or Request on behalf is empty');
            return false;
    }
Regards,
Nishant
