logo

NJP

Date Validations - Client Scripts

Import · Jan 03, 2020 · article

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.

View original source

https://www.servicenow.com/community/developer-articles/date-validations-client-scripts/ta-p/2298860