We're reclaiming inactive PDIs to keep them available for active builders. Learn what's changing, who's affected, and how to protect your work. Read More

Can Yokohama Employee Center Share Catalog Script Among Different Scripts

John Spencer
Tera Contributor

Hello All,

 

I have 10 fields on a catalog item -- require numeric input.  I have not found a way to have the function that does the input validation appear just in one place and called from there.  I include the code I am using below.  

The onChange and then the function code itself.   Right now that code is repeated in the in each 'onChange' field.   The 'input validation' code works very well.  I deliberately disallow '$' and ',' (commas).

 

Any advice / recommendation appreciated.

 

This is the onChange function:

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

    validateDollarAmount('recurring_cost_year_02', oldValue, newValue, isLoading);

}

 

 

Below is the code that is repeated:

 

function validateDollarAmount(fieldName, oldValue, newValue, isLoading) {

    if (isLoading) {

        return;

    }

 

    var raw = (newValue || '').trim();

 

    if (raw === '') {

        g_form.setValue(fieldName, '0.00');

        return;

    }

 

    // Only digits and one optional decimal with max 2 places

    var moneyPattern = /^\d+(\.\d{1,2})?$/;

 

    if (!moneyPattern.test(raw)) {

        alert('The input: ' + raw + ' is not a valid number. Enter a valid amount like 0, 12, or 12.34. Do not use $ or commas.');

 

        g_form.setValue(fieldName, oldValue || '0.00');

        return;

    }

 

    var amount = Number(raw);

 

    if (!Number.isFinite(amount) || amount < 0) {

        alert('Negative numbers are not allowed.');

        g_form.setValue(fieldName, oldValue || '0.00');

        return;

    }

 

    var normalized = amount.toFixed(2);

 

    if (newValue !== normalized) {

        g_form.setValue(fieldName, normalized);

    }

}

2 REPLIES 2

Rakesh_M
Mega Sage

Hi @John Spencer ,
1.You can make a catalog item variable accept only number .
2.In the variable record ,Under Type Specification tab ,update the Validation Regex as per requirement.
var regex.png

Tanushree Maiti
Tera Patron

Hi @John Spencer ,

 

Use OOB Validate Regex option and select Numeric there for each variable (Single Line Text).

 

TanushreeMaiti_2-1777108108367.png

 

 

Screenshot 2026-04-25 143132.png

 

 

Result: It will not accept any special character like $ or ',' or any alphabet. Only 0-9 numeric value is accepted.

TanushreeMaiti_0-1777107849964.png

 

TanushreeMaiti_1-1777107889146.png

 

Please Accept the solution if it assisted you with your question & Mark this response as Helpful.
Regards
Tanushree Maiti
ServiceNow Technical Architect
LinkedIn: https://www.linkedin.com/in/tanushreemaiti