Help
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
asifnoor
Kilo Patron
Kilo Patron

Hello,

In this article, i will share some code snippets which takes care of basic date validations at the client side. 

 

1. Selected Date cannot be less than Today

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
   if (isLoading || newValue === '') {
      return;
   }
   var selectedDateNum = getDateFromFormat(newValue,g_user_date_time_format); 
   var today_date = new Date();
   var today_dateStr = formatDate(today_date, g_user_date_time_format); 
   var todayDateNum = getDateFromFormat(today_dateStr, g_user_date_time_format);
   if(selectedDateNum < todayDateNum) {
     g_form.showErrorBox("expected_start","Expected date cannot be less than today's date",true);
    } else {
      g_form.hideFieldMsg('expected_start',true);
    }
}

 

2. Date to be entered between Today and 30 days from today's date.

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
	if (isLoading || newValue === '') {
		return;
	}
	var today_dateStr = formatDate(new Date(),g_user_date_time_format);
	var thirty_days_from_today = new Date();
	//add 30 days to today's date.
	thirty_days_from_today.setDate(thirty_days_from_today.getDate()+30);
	var thirty_days_from_todayStr = formatDate(thirty_days_from_today,g_user_date_time_format);
	var todayNum = getDateFromFormat(today_dateStr,g_user_date_time_format);
	var thirty_daysNum = getDateFromFormat(thirty_days_from_todayStr,g_user_date_time_format);
	var selected_dateNum = getDateFromFormat(newValue,g_user_date_time_format);
	if(selected_dateNum < todayNum || selected_dateNum > thirty_daysNum) {
		g_form.showFieldMsg('expected_start','Date should be between Today and 30 days from Today','error',true);
	} else {
		g_form.hideFieldMsg('expected_start',true);
	}
}

 

3. Date Range Comparison.

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
	if (isLoading || newValue === '') {
		return;
	}
	//Date to be between Jan 15th and Feb 15th only.
	//assuming date format of SN is dd/mm/yyyy. so create 2 dates in that format.
	var start_dateStr = formatDate(new Date(getDateFromFormat("15/01/2020 00:00:00",g_user_date_time_format)),g_user_date_time_format);
	var start_dateNum = getDateFromFormat(start_dateStr,g_user_date_time_format);
	var end_dateStr = formatDate(new Date(getDateFromFormat("15/02/2020 00:00:00",g_user_date_time_format)),g_user_date_time_format);
	var end_dateNum = getDateFromFormat(end_dateStr,g_user_date_time_format);
	var selected_dateNum = getDateFromFormat(newValue,g_user_date_time_format);
	if(selected_dateNum < start_dateNum || selected_dateNum > end_dateNum) {
		g_form.showFieldMsg('expected_start','Date should be between Jan 15th 2020 and Feb 15th 2020','error',true);
	} else {
		g_form.hideFieldMsg('expected_start',true);
	}
}

 

4. Add 5 days to the selected Date and set in a new field.

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
	if (isLoading || newValue === '') {
		return;
	}
	var selected_date = new Date(getDateFromFormat(newValue, g_user_date_time_format));
	//add 5 days to the selected date.
	selected_date.setDate(selected_date.getDate() + 5);
	var selected_dateStr = formatDate(selected_date, g_user_date_time_format);
	g_form.setValue('work_start',selected_dateStr);
}

 

5. Date to be entered only 10 days from selected date field.

 

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
	if (isLoading || newValue === '') {
		return;
	}
	var expected_date = new Date(getDateFromFormat(g_form.getValue("expected_start"), g_user_date_time_format));
	expected_date.setDate(expected_date.getDate()+10);
	var expected_dateStr = formatDate(expected_date,g_user_date_time_format);
	var expected_dateNum = getDateFromFormat(expected_dateStr,g_user_date_time_format);
	var selected_dateNum = getDateFromFormat(newValue,g_user_date_time_format);
	
	if(selected_dateNum < expected_dateNum ) {
		g_form.showFieldMsg('work_start','Date should be 10 days from Expected date','error',true);
	} else {
		g_form.hideFieldMsg('work_start',true);
	}
}

 

Let me know if you have any questions in the comments below.

Mark the article as helpful and bookmark if you found it useful.



Comments
Godha devi
Giga Contributor

Date to be entered is today's date. It should not be in the past it should not be in the future??

Samiksha2
Kilo Sage

Hi @asifnoor ,

Thank you for the article. I have a requirement to validate minimum past 14 days and 21 days.

Please help me in this.

 

Regards,

Samiksha 

Vijayalakshmi P
Tera Guru

Hi,

getDateFromFormat and g_user_date_time_format are not defined in Agent Workspace. These works good in Native UI.

I am searching for a good article on Workspace date validations.

 

Thanks,

Vijayalakshmi.

Ali Usman1
Giga Explorer
if(selectedDateNum != todayDateNum) {
     g_form.showErrorBox("expected_start","Expected date should only be today's date",true);
Ana Franshesca
Tera Explorer

I have a date field in the requirements form, I want to validate that the date I enter must be allow to select up to 90 days from today. How do I achieve this?

Chris Helming
Tera Guru
Tera Guru

@Ana Franshesca  just follow example 2.

Deepak89
Tera Expert

Hello @asifnoor , 

 

Thanks for Article ,but i dint not understands it. where we have to defined Data/time field which we created .

 

i have Date /time field  create in incident table , i have try  script example 1 but it dint work .

 

Deepak89_0-1696362420892.png

i also tried putting new value as g_form.getValue('u_custome_date_time) but it dint work .

Dinesh34
Tera Contributor

Hello,

Did this work as expected as I could see that the same code didn't work for me as required. I updated clearing the value if the condition didn't match, but it clears the value if selected tomorrow as well. What's the issue in this code?

 

var today_dateStr = formatDate(new Date(),g_user_date_time_format);
    var sixty_days_from_today = new Date();
    //add 60 days to today's date.
    sixty_days_from_today.setDate(sixty_days_from_today.getDate()+60);
    var sixty_days_from_todayStr = formatDate(sixty_days_from_today,g_user_date_time_format);
    var todayNum = getDateFromFormat(today_dateStr,g_user_date_time_format);
    var sixty_daysNum = getDateFromFormat(sixty_days_from_todayStr,g_user_date_time_format);
    var selected_dateNum = getDateFromFormat(newValue,g_user_date_time_format);
    if(selected_dateNum < todayNum || selected_dateNum > sixty_daysNum) {
        g_form.clearValue("reactivation_date");
}
 
 
Version history
Last update:
‎01-03-2020 05:25 AM
Updated by: