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

Date onChange Client Script Issue

Not applicable

Hi,

I have a scenario where I have to see that start date should not be greater than end date. For this, I have created two client scripts. I am getting error here. Kindly help.

 

First Client Script

 

1.png

 

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

	if(newValue )
    var start = g_form.getValue('delegation_start');
    //g_form.addInfoMessage(start);
    var end = g_form.getValue('delegation_end');
    //g_form.addInfoMessage(end);
    if (start > end) {
        g_form.addErrorMessage('Delegation Start date cannot be after End date');
        g_form.clearValue('delegation_end');
    }
}

 

Second Client Script

 

2.png

 

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

	var start = g_form.getValue('delegation_start');
	//g_form.addInfoMessage(start);
	var end = g_form.getValue('delegation_end');
	//g_form.addInfoMessage(end);
	if(start > end){
		g_form.addErrorMessage('Delegation Start date cannot be after End date');
		g_form.clearValue('delegation_end');
	}


}

 

As soon as I select this,

 

3.png

 

I am getting the error 'Delegation Start date cannot be after End date'.

 

Regards

Suman P.

1 ACCEPTED SOLUTION

@Community Alums 

you need to use return false if validation fails

function onSubmit() {

    if ((g_form.getValue('delegation_start') != '') && (g_form.getValue('delegation_end') != '')) {
        var start = g_form.getValue('delegation_start');
        //g_form.addInfoMessage(start);
        var end = g_form.getValue('delegation_end');
        //g_form.addInfoMessage(end);
        if (start > end) {
            g_form.addErrorMessage('Delegation Start date cannot be after End date');
            g_form.clearValue('delegation_end');
			return false;
        }
    }
}

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

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

View solution in original post

6 REPLIES 6

Ankur Bawiskar
Tera Patron

@Community Alums 

you can use this single onSubmit rather than 2 onChange

 

function onSubmit() {
	//Type appropriate comment here, and begin script below

	g_form.hideFieldMsg('delegation_start');
	g_form.hideFieldMsg('delegation_end');

	if(g_form.getValue('delegation_start') != '' && g_form.getValue('delegation_end')){
		var start = new Date(g_form.getValue('delegation_start')).getTime();
		var end = new Date(g_form.getValue('delegation_end')).getTime();
		if(end < start){
			var message = 'Delegation Start date cannot be after End date';
			g_form.showFieldMsg('delegation_start', message, 'error');
			g_form.showFieldMsg('delegation_end', message, 'error');
			return false;
		}

	}
}

 

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

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

Ankur Bawiskar
Tera Patron

@Community Alums 

if you still wish to have 2 onChange then use this

onChange of Delegation End

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

    g_form.hideFieldMsg('delegation_end');

    var start = g_form.getValue('delegation_start');
    var end = g_form.getValue('delegation_end');

    var startDt = new Date(getDateFromFormat(start, g_user_date_format)).getTime();
    var endDt = new Date(getDateFromFormat(end, g_user_date_format)).getTime();

    if (endDt < startDt) {
        g_form.showFieldMsg('delegation_end', 'Delegation Start date cannot be after End date', 'error');
        g_form.clearValue('delegation_end');
    }
}

onChange on Delegation Start

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

    g_form.hideFieldMsg('delegation_start');

    var start = g_form.getValue('delegation_start');
    var end = g_form.getValue('delegation_end');

    var startDt = new Date(getDateFromFormat(start, g_user_date_format)).getTime();
    var endDt = new Date(getDateFromFormat(end, g_user_date_format)).getTime();

    if (endDt < startDt) {
        g_form.showFieldMsg('delegation_start', 'Delegation Start date cannot be after End date', 'error');
        g_form.clearValue('delegation_start');
    }
}

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

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

Not applicable

Hi @Ankur Bawiskar,

 

I have used this script, it is giving the error as expected but it is still going to REQ. Kindly help.

 

function onSubmit() {

if((g_form.getValue('delegation_start') != '') && (g_form.getValue('delegation_end') != ''))
{
	var start = g_form.getValue('delegation_start');
	//g_form.addInfoMessage(start);
	var end = g_form.getValue('delegation_end');
	//g_form.addInfoMessage(end);
	if(start > end){
		g_form.addErrorMessage('Delegation Start date cannot be after End date');
		g_form.clearValue('delegation_end');
	}

	}


}

 

Regards

Suman P.

@Community Alums 

you need to use return false if validation fails

function onSubmit() {

    if ((g_form.getValue('delegation_start') != '') && (g_form.getValue('delegation_end') != '')) {
        var start = g_form.getValue('delegation_start');
        //g_form.addInfoMessage(start);
        var end = g_form.getValue('delegation_end');
        //g_form.addInfoMessage(end);
        if (start > end) {
            g_form.addErrorMessage('Delegation Start date cannot be after End date');
            g_form.clearValue('delegation_end');
			return false;
        }
    }
}

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

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