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.

Date field Validation to restrict selecting past dates

Rocky5
Kilo Sage

Hi Experts,

I have written a onchange catalog client script on the "Start Date" variable to restrict users from not to select the past dates. The below is the code I am using, But the code is also triggering if the selected date is today's date (current date). All I need to is restrict user to not to select any date before current date. 

code: 

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

//Type //get the entered date string
var enteredDate= g_form.getValue('start_date');
//get the current date/time
var rightNow = new Date().valueOf();
var dateToCheck = new Date(enteredDate).valueOf();
if (dateToCheck < rightNow)
{
//Display Error Message
g_form.addErrorMessage(getMessage('Select appropriate date'));
g_form.setValue('start_date','');
}
}

Any ideas on how to achieve this ? 

 

Thanks in advance,

Rocky.

10 REPLIES 10

Priyanka Chandr
Mega Guru

Hi,

Use this below code

Script Include:

Name:DateValidation

Client callable: Checked

 

 var DateValidation = Class.create();

 

DateValidation.prototype = Object.extendsObject(AbstractAjaxProcessor, {

validateDate: function() {

 

  var ActualEndDate = this.getParameter('sysparm_end_date');

 

  return gs.dateDiff(gs.now(),ActualEndDate, true)/86400;

 

  },

 

      type: 'DateValidation'

 

});

 

 

 

Client Script:

 

 

 

function onChange(control, oldValue, newValue, isLoading, isTemplate) {

 

      if (isLoading || newValue === '') {

 

              return;

 

      }

 

      var ga = new GlideAjax('DateValidation');

 

      ga.addParam('sysparm_name','validateDate');

 

      ga.addParam('sysparm_end_date',g_form.getValue('u_business_need_by_date'));//give your date field

 

      ga.getXML(ProcessResult);

 

     function ProcessResult(response) {

 

              var answer = response.responseXML.documentElement.getAttribute("answer");

 

              if (answer < 0)

 

                      {

 

                      g_form.clearValue('u_business_need_by_date'); //give your date field

 

                      alert('Business need date should not be in the Past.');

 

                     

 

              }

 

      }

 

}

 

Kindly mark it correct and helpful

Thanks,

Priyanka