Make changes in variable set client script so it does not affect other catalog items

SHALIKAS
Tera Guru

I want to add an if condition in my existing variable set Client Script so it does not affect other catalog items. I have written the below code to clear out the values if poet type is not capital but it is not working(highlighted in red color)

 

function onChange(control, oldValue, newValue, isLoading) {


    if (newValue) {
        //newValue = newValue.trim();
        newValue = newValue.replace(/\s/g, '');
        if (newValue !== g_form.getValue('captial_poet_number')) {
            g_form.setValue('captial_poet_number', newValue);
            return;
        }
    }

    if (newValue === '') {
        g_form.setValue('owner', '');
        g_form.setValue('poet_type', '');
        g_form.setValue('poet_company', '');
        g_form.hideFieldMsg('captial_poet_number', true);
        g_form.setDisplay('poet_error_message', false);

        return;
    }
    if (isLoading) {
        g_form.hideFieldMsg('captial_poet_number', true);
        g_form.setDisplay('poet_error_message', false);

    }

    var formatFilter = /^[a-zA-Z0-9]{8}-[a-zA-Z0-9]{4}$/;

    if (!newValue.match(formatFilter)) {
        g_form.setValue('captial_poet_number', '');
        g_form.showFieldMsg('captial_poet_number', 'Please enter a valid POET number format (e.g., XXXXXXXX-XXXX).', 'error');
        g_form.setValue('owner', '');
        g_form.setValue('poet_type', '');
        g_form.setValue('poet_company', '');
        //g_form.clearValue('validate_poet_number');
        return;
    }

    if (g_form.getValue('validate_poet_number') == true) {
       
        var ga = new GlideAjax('POETValidationAPI');
        ga.addParam('sysparm_name', 'validatePOET_ajax');
        ga.addParam('sysparm_poet_number', newValue);

        ga.getXMLAnswer(function(response) {
            var result = JSON.parse(response);

            g_form.hideFieldMsg('captial_poet_number', true);

            if (!result.isValid) {
                g_form.setValue('captial_poet_number', '');
                g_form.showFieldMsg('captial_poet_number', result.message.toString(), 'error');

                g_form.setValue('owner', '');
                g_form.setValue('poet_type', '');
                g_form.setValue('poet_company', '');

                g_form.setValue('validate_poet_number', result.isValidPoet);


            } else {
                    var sysID=g_form.getParameter('sysparam_id');
                    if(sysID=='a77ad6ec1bb406109b910ed6624bcb49'){
                       
                    if (result.poetType != 'CAPITAL') {
                        g_form.setValue('captial_poet_number', '');
                        g_form.setValue('poet_error_message', false);
                        g_form.setValue('validate_poet_number', '');
                        g_form.setValue('owner', '');
                        g_form.setValue('poet_company', '');
                        g_form.setValue('poet_type', '');

                        g_form.showFieldMsg('captial_poet_number', 'You must provide a CAPITAL POET in order to process this request.');
                    } else {
                       
                        g_form.showFieldMsg('captial_poet_number', result.message.toString(), 'info', true);

                        g_form.setValue('owner', result.ownerSysId);

                        g_form.setValue('poet_type', result.poetType);

                        g_form.setValue('poet_company', result.poetCompany);

                    }
                }
               
               
                g_form.showFieldMsg('captial_poet_number', result.message.toString(), 'info', true);

                g_form.setValue('owner', result.ownerSysId);

                g_form.setValue('poet_type', result.poetType);

                g_form.setValue('poet_company', result.poetCompany);

            }

        });
    }
}
2 REPLIES 2

Ankur Bawiskar
Tera Patron

@SHALIKAS 

grab the URL and search for sysId of your particular catalog item

Then update the logic so that it runs only for your catalog item and not when this script runs on other items

function onChange(control, oldValue, newValue, isLoading) {


    if (newValue) {
        //newValue = newValue.trim();
        newValue = newValue.replace(/\s/g, '');
        if (newValue !== g_form.getValue('captial_poet_number')) {
            g_form.setValue('captial_poet_number', newValue);
            return;
        }
    }

    if (newValue === '') {
        g_form.setValue('owner', '');
        g_form.setValue('poet_type', '');
        g_form.setValue('poet_company', '');
        g_form.hideFieldMsg('captial_poet_number', true);
        g_form.setDisplay('poet_error_message', false);

        return;
    }
    if (isLoading) {
        g_form.hideFieldMsg('captial_poet_number', true);
        g_form.setDisplay('poet_error_message', false);

    }

    var formatFilter = /^[a-zA-Z0-9]{8}-[a-zA-Z0-9]{4}$/;

    if (!newValue.match(formatFilter)) {
        g_form.setValue('captial_poet_number', '');
        g_form.showFieldMsg('captial_poet_number', 'Please enter a valid POET number format (e.g., XXXXXXXX-XXXX).', 'error');
        g_form.setValue('owner', '');
        g_form.setValue('poet_type', '');
        g_form.setValue('poet_company', '');
        //g_form.clearValue('validate_poet_number');
        return;
    }

    if (g_form.getValue('validate_poet_number') == true) {

        var ga = new GlideAjax('POETValidationAPI');
        ga.addParam('sysparm_name', 'validatePOET_ajax');
        ga.addParam('sysparm_poet_number', newValue);

        ga.getXMLAnswer(function(response) {
            var result = JSON.parse(response);

            g_form.hideFieldMsg('captial_poet_number', true);

            if (!result.isValid) {
                g_form.setValue('captial_poet_number', '');
                g_form.showFieldMsg('captial_poet_number', result.message.toString(), 'error');

                g_form.setValue('owner', '');
                g_form.setValue('poet_type', '');
                g_form.setValue('poet_company', '');

                g_form.setValue('validate_poet_number', result.isValidPoet);


            } else {
                var url = top.location.href;
                if (url.indexOf('a77ad6ec1bb406109b910ed6624bcb49') > -1) {

                    if (result.poetType != 'CAPITAL') {
                        g_form.setValue('captial_poet_number', '');
                        g_form.setValue('poet_error_message', false);
                        g_form.setValue('validate_poet_number', '');
                        g_form.setValue('owner', '');
                        g_form.setValue('poet_company', '');
                        g_form.setValue('poet_type', '');

                        g_form.showFieldMsg('captial_poet_number', 'You must provide a CAPITAL POET in order to process this request.');
                    } else {

                        g_form.showFieldMsg('captial_poet_number', result.message.toString(), 'info', true);

                        g_form.setValue('owner', result.ownerSysId);

                        g_form.setValue('poet_type', result.poetType);

                        g_form.setValue('poet_company', result.poetCompany);

                    }
                }


                g_form.showFieldMsg('captial_poet_number', result.message.toString(), 'info', true);

                g_form.setValue('owner', result.ownerSysId);

                g_form.setValue('poet_type', result.poetType);

                g_form.setValue('poet_company', result.poetCompany);

            }

        });
    }
}

💡 If my response helped, please mark it as correct and close the thread 🔒— this helps future readers find the solution faster! 🙏

Regards,
Ankur
Certified Technical Architect  ||  10x ServiceNow MVP  ||  ServiceNow Community Leader

pavani_paluri
Tera Guru

Hi @SHALIKAS ,

 

Why we are creating client script at variable set, if you want separate functionality create separate client scripts at catalog item level. if this variable set is part of that catalog item, you can get all the values of the variables under that.

 

Mark it helpful if this helps you to understand. Accept solution if this give you the answer you're looking for
Kind Regards,
Pavani P