[Date] field to only allow current date and future dates (No past dates)

imranybs
Kilo Contributor

Hi,

I've the following script that allows not to select any past dates. But I would like to modify this to select the current date and any future dates. Please advise. Thanks ! function onChange(control, oldValue, newValue, isLoading, isTemplate) {                 if (isLoading || newValue == '') {                                 return;                         }                         var d = getDateFromFormat(newValue, g_user_date_format);                 var today = new Date();                 if (d < today) {                                 alert('The date value cannot be before the current date and time. Please correct.');                 g_form.clearValue("effective_date");                 }         }

1 ACCEPTED SOLUTION

arnabwa
Giga Guru

Hi Imran and All,



Let us make this very very simple.


We will make a UI Policy with this condition :


curr1.PNG


here manufacture_date is the field which I'm checking if a past date is not entered. Replace it with your own variable name.



And now we just write a 2 line code in the "Script" part of the same UI Policy :


curr2.PNG



And that's it guys. We are good to go. We need not use any client scripts because for form validations the best practice is to use UI Policies. Using client scripts would have performance issues.


Please let me know if you have further doubts.



Thanks,


Arnab


View solution in original post

25 REPLIES 25

tanumoy
Tera Guru

Below link will help you.



Client Script Date/Time Functions


tanumoy
Tera Guru

Here you go:



Script Include:


Name: ClientDateTimeUtils


Client Callable: True


Code:



var ClientDateTimeUtils = Class.create();


ClientDateTimeUtils.prototype = Object.extendsObject(AbstractAjaxProcessor, {



  getNowDateTimeDiff: function(){  


  var firstDT = this.getParameter('sysparm_fdt'); //First Date-Time Field  


  var diff = gs.dateDiff(gs.nowDateTime(), firstDT, true);  


  return diff;  


},



      type: 'ClientDateTimeUtils'


});



Now the onChange Client Script:



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


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


          return;


    }




  var cdt = g_form.getValue('effective_date'); //First Date/Time field  


 


  var ajax = new GlideAjax('ClientDateTimeUtils');  


  ajax.addParam('sysparm_name','getNowDateTimeDiff');  


  ajax.addParam('sysparm_fdt', cdt);  


  ajax.getXML(doSomething);  


 


  function doSomething(response){  


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


  if (answer < 0)


  {


  alert('The date value cannot be before the current date and time. Please correct.');


  g_form.clearValue("effective_date");


  }


   


  }


}




Let me know the result.


imranybs
Kilo Contributor

Sorry, it didn't work.


Sorry, it didn't work.