Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Way to set today to Date column with client script

matsui
Tera Contributor

Hello,

 

I want to set today to Date column with client script.
I understand that I can set it with javascript: new GlideDateTime().getDate() in default value.
But, it needs to set today, only when the value of other column is changed.
So I think that I need to use client script.
How I can set it with client script ?

 

Regards,

1 ACCEPTED SOLUTION

Kavita_Bhojane
Tera Guru

Hi @matsui ,

 

You can use onChange client script. Here, I have set "Today's Date" on change of priority. 

 

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
var today_date = new Date();
var today_date_str = formatDate(today_date, g_user_date_format);
//Type appropriate comment here, and begin script below
if (oldValue != newValue) {
g_form.setValue('u_todays_date', today_date_str);
}
}

 

Screenshot 2023-10-24 at 9.05.11 PM.png

 

Please mark my answer helpful if you find it useful.

 

Thanks,

Kavita Bhojane

View solution in original post

10 REPLIES 10

Danish Bhairag2
Tera Sage

Hi @matsui ,

 

U can use a onChange script to call a script include using GlideAjax n return today's date using new GlideDateTime as it does not work in client side.

 

Thanks,

Danish

 

@DanishBhairag2 
Thank you for your answer.
Could you give me sample code ?


Regards,

Sure will send one

Hi @matsui ,

 

Script Include: Please provide snc_internal role when asked for which role can access the script after submitting the script

 

var SetDate = Class.create();
SetDate.prototype = Object.extendsObject(AbstractAjaxProcessor, {

    fetchDate: function() {

        var date =  new GlideDateTime().getDate();
		return date;
		
    },
    type: 'SetDate'
});

 

 

Client Script: OnChange 

UI Type : All

Select proper variable name on change of which u wish to trigger this script.

 

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


    var ga = new GlideAjax('SetDate');
    ga.addParam('sysparm_name', 'fetchDate');
    ga.getXML(respond);

    function respond(response) {
        var answer = response.responseXML.documentElement.getAttribute("answer");
        g_form.setValue('date_field', answer);// replace proper backend name of your variable

    }

}

 

 

Thanks,

Danish