The CreatorCon Call for Content is officially open! Get started here.

Date time field cannot be in future

FotinaG
Tera Contributor

Hi Team,

 

In var set I have Date time field , however i need to make it unpossible to choose date in future and show an info that  date cannot be in future in 2 languages depending on what user session is.

I tried with Client script into car set and separately in item, also with UI policy, but still behavior is not changing. It had to be easy task, but I cant achieve the goal. Is it an issue that this variable is in var set? 

Could you please help me to find an easy solution?

 

Thank you

Tina

2 ACCEPTED SOLUTIONS

@FotinaG , 

CC : @GlideFather 

 

It should work, if you write client script on variable set too.

Refer below screenshots.

Screenshot (22).png

 

Screenshot (24).png

If this works, please mark it as helpful/accepted — it keeps me motivated and helps others find solutions.
Shashank Jain

View solution in original post

@FotinaG 

you can achieve this without scripting and simply use UI policy

Restrict user for selecting future dates in Service Catalogue. 

Reference from above: You can write a simple UI Policy as show below:

AnkurBawiskar_0-1755161389403.png

 

AnkurBawiskar_1-1755161389364.png

 


Output will be as shown below:

AnkurBawiskar_2-1755161389379.png

 

 

 

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

20 REPLIES 20

Shashank_Jain
Kilo Sage

@FotinaG ,

 

I have tried this on PDI and its working.

Please try this on change client script for that particular field.

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

    var selectedDate = new Date(newValue);
    var now = new Date();

    // Normalize for comparison
    selectedDate.setSeconds(0, 0);
    now.setSeconds(0, 0);

    if (selectedDate > now) {
        // Get user's session language (defaults to English if not found)
        var userLang = (typeof g_user_language !== 'undefined' && g_user_language) 
            ? g_user_language 
            : 'en';

        // Default message
        var msg = "Date cannot be in the future.";

        // Add translations
        if (userLang.startsWith('fr')) {
            msg = "La date ne peut pas être dans le futur.";
        } else if (userLang.startsWith('de')) {
            msg = "Das Datum darf nicht in der Zukunft liegen.";
        }
        // Add more languages if needed

        // Show message in alert
        alert(msg);

        // Clear the invalid value
        g_form.setValue(control.name, '');
    }
}

Screenshot (9).png

 

If this helps, please consider marking my answer as helpful/accepted — it motivates me to stay active in the community and also helps others find relevant solutions more easily.

Thank you!

If this works, please mark it as helpful/accepted — it keeps me motivated and helps others find solutions.
Shashank Jain

Hello @Shashank_Jain ,

 

Thank you so much for your time, I tried it in my record producer, but it didnt work, should i create this client script in variable set where my Data/Time field is? Or this client script should be in Catalog item? Should I add my ral var name somewhere in code or just set Varible name in client script field after Type on Change?

 

Thank you so much again for your precisous time at such late evening.

 

Fotina

@FotinaG ,

I guess you should give it a try on variable set client script and select the field on client script itself.

 

It should work.

 

If this works, please mark it as helpful/accepted — it keeps me motivated and helps others find solutions.
Shashank Jain

Hmm still failing, is it ok for esc?Because i try t use it on portal?

My apologies for all these questions