on 01-03-2020 05:25 AM
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.
Date to be entered is today's date. It should not be in the past it should not be in the future??
Hi
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
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.
if(selectedDateNum != todayDateNum) {
g_form.showErrorBox("expected_start","Expected date should only be today's date",true);
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?
@Ana Franshesca just follow example 2.
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 .
i also tried putting new value as g_form.getValue('u_custome_date_time) but it dint work .
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?