Comparing two fields on service catalog form

anushadande1793
Tera Contributor

Hi 

 

Need help on below requirement. Can someone help on this?

we need to compare two fields and one field value shouldn't be exceeded and it should be negative always.

we have written onchange client script to allow only negative values but not able to compare with other field and restrict with less values. From the below screenshot, Accum should allow only less values than cost and always negative values. Any inputs really helps me alot

anushadande1793_0-1735541634201.png

 

 

Thanks & Regards,

Anusha

 

 

1 ACCEPTED SOLUTION

@anushadande1793 

I shared script below.

Sharing updated script again

try that and share your updates, it should be onChange on Accum variable

function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue === '') {
        return;
    }

    g_form.hideFieldMsg('accum');
    // Ensure Accum is negative
    if (parseInt(newValue) >= 0) {
        g_form.showFieldMsg('accum_to_retire', 'Accum must be a negative value', 'error');
        g_form.clearValue('accum_to_retire');
        return;
    }

    // Compare Accum with Cost
    var cost = g_form.getValue('cost');
    if (parseFloat(newValue) >= parseFloat(cost)) {
        g_form.showFieldMsg('accum_to_retire', 'Accum must be less than Cost', 'error');
        g_form.clearValue('accum_to_retire');
    }
}

If my response helped please mark it correct and close the thread so that it benefits future readers.

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

View solution in original post

11 REPLIES 11

Hello @anushadande1793 ,

Please try to check with the below modified script once and see how it works for you.

function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue.trim() === '') {
        return;
    }

    g_form.hideFieldMsg('accum'); // Clear previous messages

    // Ensure the value is numeric
    if (isNaN(newValue)) {
        g_form.showFieldMsg('accum', 'Please enter a valid numeric value.', 'error');
        g_form.clearValue('accum');
        return;
    }

    // Convert the new value to a number for validation
    var accum = parseFloat(newValue);

    // Ensure the value is negative
    if (accum >= 0) {
        g_form.showFieldMsg('accum', 'Value must be negative.', 'error');
        g_form.clearValue('accum');
        return;
    }

    // Fetch and validate the cost field
    var costValue = g_form.getValue('cost');
    if (!costValue || isNaN(costValue)) {
        g_form.showFieldMsg('accum', 'Please ensure the Cost field has a valid value.', 'error');
        return;
    }

    var cost = parseFloat(costValue);

    // Ensure Accum is less than Cost
    if (accum >= cost) {
        g_form.showFieldMsg('accum', 'Value must be less than the Cost field.', 'error');
        g_form.clearValue('accum');
    }
}

 

Please Mark Correct if this solves your query and also mark 👍Helpful if you find my response worthy based on the impact.


Regards,
Aniket

@anushadande1793 

I shared script below.

Sharing updated script again

try that and share your updates, it should be onChange on Accum variable

function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue === '') {
        return;
    }

    g_form.hideFieldMsg('accum');
    // Ensure Accum is negative
    if (parseInt(newValue) >= 0) {
        g_form.showFieldMsg('accum_to_retire', 'Accum must be a negative value', 'error');
        g_form.clearValue('accum_to_retire');
        return;
    }

    // Compare Accum with Cost
    var cost = g_form.getValue('cost');
    if (parseFloat(newValue) >= parseFloat(cost)) {
        g_form.showFieldMsg('accum_to_retire', 'Accum must be less than Cost', 'error');
        g_form.clearValue('accum_to_retire');
    }
}

If my response helped please mark it correct and close the thread so that it benefits future readers.

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

@anushadande1793 

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.

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

Ankur Bawiskar
Tera Patron
Tera Patron

@anushadande1793 

Use this onChange script for Accum variable

function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue === '') {
        return;
    }

     g_form.hideFieldMsg('accum');
    // Ensure Accum is negative
    if (parseInt(newValue) >= 0) {
        g_form.showFieldMsg('accum', 'Accum must be a negative value', 'error');
        g_form.clearValue('accum');
        return;
    }

    // Compare Accum with Cost
    var cost = g_form.getValue('cost');
    if (parseFloat(newValue) >= parseFloat(cost)) {
        g_form.showFieldMsg('accum', 'Accum must be less than Cost', 'error');
        g_form.clearValue('accum');
    }
}

If my response helped please mark it correct and close the thread so that it benefits future readers.

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

Ravi Gaurav
Giga Sage
Giga Sage

Hi @anushadande1793 

 

Create onChange client script for accum variable

 

var accum = g_form.getValue('accum'); 
var cost = g_form.getValue('cost');


if (accum >= 0) {
g_form.setValue('accum', -Math.abs(accum)); 
}

if (accum >= cost) {
g_form.setValue('accum', cost - 1);
alert("Accum should be less than Cost.");
}
}

--------------------------------------------------------------------------------------------------------------------------


If you found my response helpful, I would greatly appreciate it if you could mark it as "Accepted Solution" and "Helpful."
Your support not only benefits the community but also encourages me to continue assisting. Thank you so much!

Thanks and Regards
Ravi Gaurav | ServiceNow MVP 2025,2024 | ServiceNow Practice Lead | Solution Architect
CGI
M.Tech in Data Science & AI

 YouTube: https://www.youtube.com/@learnservicenowwithravi
 LinkedIn: https://www.linkedin.com/in/ravi-gaurav-a67542aa/