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

Populate date after 90days using catalog client script

Community Alums
Not applicable

Hello,

 

There is requirement where I need to auto populate the date after 90 days in a catalog item using catalog client script. 

A field A (Drop down) has an option 90 days. When user selects this option then field B (Date field) should be visible on the form, and it should auto populate the date after 90 days comparing the current date.

Rakshandha_0-1669895769592.png

 

Tried the below script which is not populating the correct date and the output is 2001-12-30,

Rakshandha_1-1669896345536.png

 

 

This needs to be implemented in priority.

 

Thanks in advance!

1 ACCEPTED SOLUTION

S Goutham
Tera Guru

Hey @Community Alums 

Please try the below script 

 

function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        return;
    }
    if (newValue == 90) {
		//alert(newValue);
        var current_date = new Date();
		//alert('Current Date'+current_date);
        current_date.setDate(current_date.getDate() + 90);
        var added_date = formatDate(current_date, g_user_date_time_format);
		var getAddedDate = added_date.split(' ');
		//alert('Output Date '+getAddedDate[0]);
        g_form.setValue('output_date', getAddedDate[0]+'');
    }
}

SGoutham_0-1669913467377.png

 

 

I hope this solves your issue
Mark this as Helpful / Accept the Solution if this clears your issue

View solution in original post

10 REPLIES 10

@Community Alums Please create a on-change client script on FIELD A (which is a dropdown field) and write below code in it.

 

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

var d = new Date();
d.setDate(Number(g_form.getValue("<FIELD A HERE>")));

var dformat = [d.getFullYear(),
('0' + (d.getMonth() + 1)).slice(-2),
('0' + d.getDate()).slice(-2)
].join('-') + ' ' + [('0' + d.getHours()).slice(-2),
('0' + d.getMinutes()).slice(-2),
('0' + d.getSeconds()).slice(-2)
].join(':');
g_form.setValue("<FIELD B HERE>", dformat.toString());
}

Please mark the answer as correct or helpful based on impact
ServiceNow Community Rising Star, Class of 2023

Sunny15
Tera Guru

Hello @Community Alums ,

 

You can try following code in Onchnage client script of 'A' field.

 

 

var date = new Date();
date.setDate(date.getDate()+parseInt(newValue)) // newValue take the integer  value from A field
var dd=date.getDate()
if(dd<10)
dd='0'+dd;
var mm=date.getMonth()+1
if(mm<10)
mm='0'+mm;
var new_date=dd+"-"+mm+"-"+date.getFullYear();
g_form.setValue('B',new_date);

 

 

 Let me know if you have any further question.

 

Feel free to mark correct, If I answered your query.
Will be helpful for future visitors looking for similar questions 

 

Community Alums
Not applicable

Hi Sunny,

Thank you so much for the response!

Here in my requirement the field A is not a date field. It's a dropdown field which contain only two options "None" and "90 days". So when user selects the option 90days in A field, B field should populate the date adding current date + 90days.

 

Therefore, I cannot compare the A field as a start date to populate B field.

Hello @Community Alums ,

 

You can try following code Which will help you to achieve your requirement.

 

if(newValue!='none' && newValue !='' && newValue!=undefined){
var date = new Date();
date.setDate(date.getDate()+90) // newValue take the integer  value from A field
var dd=date.getDate()
if(dd<10)
dd='0'+dd;
var mm=date.getMonth()+1
if(mm<10)
mm='0'+mm;
var new_date=dd+"-"+mm+"-"+date.getFullYear();
g_form.setValue('B',new_date);
}

 

S Goutham
Tera Guru

Hey @Community Alums 

Please try the below script 

 

function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        return;
    }
    if (newValue == 90) {
		//alert(newValue);
        var current_date = new Date();
		//alert('Current Date'+current_date);
        current_date.setDate(current_date.getDate() + 90);
        var added_date = formatDate(current_date, g_user_date_time_format);
		var getAddedDate = added_date.split(' ');
		//alert('Output Date '+getAddedDate[0]);
        g_form.setValue('output_date', getAddedDate[0]+'');
    }
}

SGoutham_0-1669913467377.png

 

 

I hope this solves your issue
Mark this as Helpful / Accept the Solution if this clears your issue