Date calculation

Discussions about Forms Designer for SharePoint 2013 / 2016 and Office 365.
Locked
User avatar
Geir Mathisen
Posts: 16
Joined: Sun Dec 22, 2013

20 Jan 2014

I need to set a default date field value based on another date filed in the form.
To_Date = From_Date + 10 days

Typically I would expect a javascript line something like this:

fd.field('To_Date').value(fd.field('From_Date').value()) + 10;

But this does not work.

Anyone know the correct syntax for doing date calculations in FD?

Thanks

User avatar
Dmitry Kozlov
Site Admin
Posts: 1524
Joined: Thu Jun 07, 2012

21 Jan 2014

Hello Geir,

First, you have to convert string representation of your date to JavaScript object. Please, try the following code:

Code: Select all

fd.field('Start_x0020_Date').change(function() {
	var startDateText = fd.field('Start_x0020_Date').value();
	if (startDateText) {
		var startDate = new Date(Date.parse(startDateText));
		var endDate = new Date(startDate);
		endDate.setDate(endDate.getDate() + 10);
		fd.field('End_x0020_Date').value([endDate.getMonth()+1, 
			endDate.getDate(), endDate.getFullYear()].join('/'));
	}
}); 
Please, note that internal names of my fields are 'Start_x0020_Date' and 'End_x0020_Date', you should replace them with your values.

User avatar
Geir Mathisen
Posts: 16
Joined: Sun Dec 22, 2013

21 Jan 2014

Thanks for yet another fast response.
I have tried to insert your code, with my variables.

Something goes wrong, which results in the calculated date not bbeing recognized as a date (or numbers).
Result = "NaN/NaN/NaN"

It seems to go wrong in this line:

var startDate = new Date(Date.parse(startDateText));

alert(startDate); - returns "InvalidDate".

Any idea what is causing this?


Thanks again

User avatar
Dmitry Kozlov
Site Admin
Posts: 1524
Joined: Thu Jun 07, 2012

22 Jan 2014

What is your date format: mm/dd/yyyy? Do you use Date with Time fields or just Date?

User avatar
Geir Mathisen
Posts: 16
Joined: Sun Dec 22, 2013

22 Jan 2014

Date fields is date only (no time).

Date format in Norway is: dd.mm.yyyy

(I replaced the pad char from "/" to ".")

Geir

User avatar
Dmitry Kozlov
Site Admin
Posts: 1524
Joined: Thu Jun 07, 2012

22 Jan 2014

Could you place alert(startDateText) after this line fo code:

Code: Select all

var startDateText = fd.field('Start_x0020_Date').value();

User avatar
Geir Mathisen
Posts: 16
Joined: Sun Dec 22, 2013

22 Jan 2014

Script:

var startDateText = fd.field('Fra_x0020_Dato').value();
alert(startDateText);
Returns

02.01.2014 - which is correct

User avatar
Dmitry Kozlov
Site Admin
Posts: 1524
Joined: Thu Jun 07, 2012

23 Jan 2014

Parse function doesn't work for your date format (dd.mm.yyyy), please, try the following code instead:

Code: Select all

fd.field('Start_x0020_Date').change(function() {
	var startDateText = fd.field('Start_x0020_Date').value();
	if (startDateText) {
		var startDateParts = startDateText.split('.');
		var startDate = new Date(startDateParts[2], startDateParts[1]-1,
				startDateParts[0]);
		var endDate = new Date(startDate);
		endDate.setDate(endDate.getDate() + 10);
		fd.field('End_x0020_Date').value([endDate.getDate(), endDate.getMonth()+1,
				endDate.getFullYear()].join('.'));
	}
});

User avatar
Geir Mathisen
Posts: 16
Joined: Sun Dec 22, 2013

23 Jan 2014

That worked perfectly.

TAHNKS A LOT!

Locked
  • Information
  • Who is online

    Users browsing this forum: No registered users and 7 guests