
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-03-2019 11:17 AM
Hey there SN Comm,
Looking for some help with a client script please.
Requirement:
Date field called 'Deadline' - When entered/changed, I need another field called 'Timing', to display certain choices:
If Deadline = today (timing = "overdue")
If Deadline = in the future but less than 180 days from current system date, (timing = “Deadline Approaching”)
If Deadline = in the future but <= 12/31 of the current year, (timing = “This Year”)
If Deadline = in the future but > 12/31 of the current year, (timing = “Future”)
I tried creating a test client script so far to get me going, but I get Timing = "Undefined" in the field.
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
var theDeadline = g_form.getValue('u_deadline');
var theTiming;
var reqDate = new Date(getDateFromFormat(newValue, g_user_date_format));
var today = new Date();
if (today == theDeadline) {
theTiming = "Overdue";
}
g_form.setValue('u_timing', theTiming);
}
Anyone able to help?
John Feist - want to take another stab at more client scripts with me? LOL
Cheers!
-Rob
Solved! Go to Solution.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-12-2019 12:12 PM
I was able to figure out what I needed in order to make this work how I now want it too.
Adding my code in here in case it helps anyone. Making this as correct to close the post.
Thanks all!
-Rob
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
var theTiming;
var today = new Date();
//get the entered date string
var dtstring = g_form.getValue('u_deadline');
//convert entered date to Date object
var dateToCheck = new Date(dtstring);
var approaching = new Date();
approaching.setDate(today.getDate() + 179);
//Compare the two numbers
if (dateToCheck < today || dateToCheck == today) {
theTiming = "Overdue";
g_form.setValue('u_timing', theTiming);
}
else if (dateToCheck <= approaching) {
theTiming = "Within 6 Months";
g_form.setValue('u_timing', theTiming);
}
else if (dateToCheck > approaching) {
theTiming = "6+ Months";
g_form.setValue('u_timing', theTiming);
}
else {
theTiming = "Where did that Date come from?";
g_form.setValue('u_timing, theTiming');
}
}

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-06-2019 11:47 AM
Hey vkachineni,
Thanks for replying - unfortunately, nothing at all happened with your code for me.
This is what I have thus far, that is working - however, when I choose a date from Deadline, to be anything in the year 2020, theTiming 'Timing' remains Deadline Approaching.
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
var theTiming;
var today = new Date();
//get the entered date string
var dtstring = g_form.getValue('u_deadline');
//convert the string to a JavaScript Date/Time
var dt = new Date(dtstring);
//get the current date/time
var rightNow = new Date().valueOf();
//convert entered date to milliseconds
var dateToCheck = new Date(dtstring).valueOf();
var approaching = new Date();
approaching.setDate(today.getDate() - 180);
var theFuture = new Date(new Date().getFullYear(), 11, 31);
//theFuture.setDate(today.getDate());
//Compare the two numbers
if (dateToCheck < rightNow || dateToCheck == rightNow) {
theTiming = "Overdue";
g_form.setValue('u_timing', theTiming);
}
else if (dateToCheck >= approaching) {
theTiming = "Deadline Approaching";
g_form.setValue('u_timing', theTiming);
}
else if (dateToCheck > theFuture){
theTiming = "Future";
g_form.setValue('u_timing, theTiming');
}
}
Thoughts?
-Rob

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-10-2019 10:22 AM
Hey SN Comm,
If anyone is able to get me with this scripting - I would appreciate it! I have gotten far, but not far enough. I am still unable to figure out how to calculate for these two scenarios:
If Deadline (value form) is in the future but <= 12/31 of the current year, “This Year”
If Deadline (value form) is in the future but > 12/31 of the current year, “Future”
I Appreciate the help - here is my latest script (as I have been attempting many different ways)
I have what I believe to be the two vars that I am sure are my issues.
When the deadline date field equals a future date more than 180 days from today, but before the new year, "this year" needs to appear in a separate read-only field (which I have working with Overdue and Deadline Approaching).
When the deadline date field equals a date into the new year, "future" will appear in the read-only field.
I definitely need some help scripting this part.
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
var theTiming;
var today = new Date();
//get the entered date string
var dtstring = g_form.getValue('u_deadline');
//convert the string to a JavaScript Date/Time
var dt = new Date(dtstring);
//get the current date/time
var rightNow = new Date().valueOf();
//convert entered date to milliseconds
var dateToCheck = new Date(dtstring).valueOf();
var approaching = new Date();
approaching.setDate(today.getDate() - 180);
/*var thisYear = new Date(new Date().getFullYear(), 11, 31);
thisYear.setFullYear(2019);
var theFuture = new Date(new Date().getFullYear(), 0, 01);
theFuture.setFullYear(2020);
*/
//Compare the two numbers
if (dateToCheck < rightNow || dateToCheck == rightNow) {
theTiming = "Overdue";
g_form.setValue('u_timing', theTiming);
}
else if (dateToCheck >= approaching) {
theTiming = "Deadline Approaching";
g_form.setValue('u_timing', theTiming);
}
else if (dateTocheck <= thisYear) {
theTiming = "This Year";
g_form.setValue('u_timing', theTiming);
}
else if (dateToCheck >= theFuture){
theTiming = "Future";
g_form.setValue('u_timing, theTiming');
}
}
Cheers!
-Rob

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-12-2019 12:12 PM
I was able to figure out what I needed in order to make this work how I now want it too.
Adding my code in here in case it helps anyone. Making this as correct to close the post.
Thanks all!
-Rob
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
var theTiming;
var today = new Date();
//get the entered date string
var dtstring = g_form.getValue('u_deadline');
//convert entered date to Date object
var dateToCheck = new Date(dtstring);
var approaching = new Date();
approaching.setDate(today.getDate() + 179);
//Compare the two numbers
if (dateToCheck < today || dateToCheck == today) {
theTiming = "Overdue";
g_form.setValue('u_timing', theTiming);
}
else if (dateToCheck <= approaching) {
theTiming = "Within 6 Months";
g_form.setValue('u_timing', theTiming);
}
else if (dateToCheck > approaching) {
theTiming = "6+ Months";
g_form.setValue('u_timing', theTiming);
}
else {
theTiming = "Where did that Date come from?";
g_form.setValue('u_timing, theTiming');
}
}