- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-18-2022 06:02 AM
Hi Community Team,
I am new in scripting part of ServiceNow platform & stuck with the requirement - Journey date field should be in between Start date & End date (i.e., Journey date cannot be before start date & cannot be after end date).
I tried to achieve this by Script Include (client callable) called on Client Script Include, I achieved its associated requirements of Start Date cannot be the past to Current/Now date followed by End Date cannot be the past to Start date, but for Journey Date field requirement, its not working properly like when I select a date in between of start Date & end date, its still showing alert 'Journey date cannot be after the end date' & cleared the value (screenshot attached)
While, yes its working when I select any journey date past to start date & also working for any journey date later to end date, but its not working when I select any journey date in between start date & end date field, ideally that should be taken.
Script Include-
var setDateFields = Class.create();
setDateFields.prototype = Object.extendsObject(AbstractAjaxProcessor, {
nowDateTime: function() {
var startDate = this.getParameter('sysparm_u_start_date');
//gs.log('start date time' + startDate);
return gs.dateDiff(gs.nowDateTime(), startDate, true) / 86400;
//gs.log("now date time" + gs.dateDiff(gs.nowDateTime(), startDate, true)/ 86400) ;
},
compareenddatenowdate: function() {
var endDate = this.getParameter('sysparm_u_end_date');
return gs.dateDiff(gs.nowDateTime(), endDate, true) / 86400;
},
compareedatsdate: function() {
var startDate = this.getParameter('sysparm_u_start_date');
var endDate = this.getParameter('sysparm_u_end_date');
return gs.dateDiff(startDate, endDate, true) / 86400;
},
comparejdatenowdate: function() {
var journeyDate = this.getParameter('sysparm_u_journey_date');
return gs.dateDiff(gs.nowDateTime(), journeyDate, true) / 86400;
},
comparejdatesdate: function() {
var startDate = this.getParameter('sysparm_u_start_date');
var journeyDate = this.getParameter('sysparm_u_journey_date');
return gs.dateDiff(startDate, journeyDate, true) / 86400;
},
comparejdateenddate: function() {
var journeyDate = this.getParameter('sysparm_u_journey_date');
gs.log('journey date time ' + journeyDate);
var endDate = this.getParameter('sysparm_u_end_date');
return gs.dateDiff(journeyDate, endDate, true) / 86400;
},
type: 'setDateFields'
});
--------------------------------------------------------------
1-Client Script (Compare Journey date with end date, applied OnChange Client Script on Field- Journey Date )
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
var ga3 = new GlideAjax('setDateFields');
ga3.addParam('sysparm_name', 'comparejdateenddate');
ga3.addParam('sysparm_u_journey_date', g_form.getValue('u_journey_date'));
ga3.getXML(comparejourneydatewithenddate);
function comparejourneydatewithenddate(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
if (answer < 0) {
alert('Sorry! Journey Date cannot be after the End Date');
g_form.clearValue('u_journey_date');
} else {
alert(" Valid Journey Date!");
}
}
}
2-Client Script (Compare Journey date with Now date, applied OnChange Client Script on Field- Journey Date)
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
var ga4 = new GlideAjax('setDateFields'); //script include name
ga4.addParam('sysparm_name', 'comparejdatenowdate');
ga4.addParam('sysparm_u_journey_date', g_form.getValue('u_journey_date'));
ga4.getXML(comparejourneydatewithnowdate);
function comparejourneydatewithnowdate(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
if (answer < 0) {
alert('Sorry! Journey Date cannot be before the Current Date');
g_form.clearValue('u_journey_date');
} else {
alert("Correct Journey Date!");
}
}
}
3-Client Script (Compare Journey date with Start date, applied OnChange Client Script on Field- Journey Date)
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
var ga2 = new GlideAjax('setDateFields');
ga2.addParam('sysparm_name', 'comparejdatesdate');
ga2.addParam('sysparm_u_journey_date', g_form.getValue('u_journey_date'));
ga2.getXML(comparejourneydatewithstartdate);
function comparejourneydatewithstartdate(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
if (answer <= 0) {
alert('Sorry! Journey Date cannot be before the Start Date');
g_form.clearValue('u_journey_date');
} else {
alert("Perfect Journey Date!");
}
}
}
---------------------------------------------------------------------------------
Please take your valuable time out & help me with this, I shall be truly grateful.
Thanks in advance.
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-18-2022 06:30 AM
Hi rishabh,
I have not gone into deep debugging but just found the following missing statements in 1st and 3rd client scripts respectively..
ga3.addParam('sysparm_u_end_date', g_form.getValue('<end_date_field_name>')); // 1 Client-Script
ga2.addParam('sysparm_u_start_date', g_form.getValue('<start_date_field_name>')); // 3 Client Script
Hopefully, this will do the trick for you.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-18-2022 06:30 AM
Hi rishabh,
I have not gone into deep debugging but just found the following missing statements in 1st and 3rd client scripts respectively..
ga3.addParam('sysparm_u_end_date', g_form.getValue('<end_date_field_name>')); // 1 Client-Script
ga2.addParam('sysparm_u_start_date', g_form.getValue('<start_date_field_name>')); // 3 Client Script
Hopefully, this will do the trick for you.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-18-2022 09:58 PM
Thanks Mr. Muhammad, it works!