I am a developer for Cognito Forms.
Since February 2015 the following functionality has been made available:
In this example, I am setting the range on the Start Date field to
=DateTime.Today. It could have also been
=DateTime.Today.AddDays(1) to be tomorrow or later. Calculations are very robust and should cover most scenarios you can dream up, but you can also just enter literal dates.
I then set the range on the End Date to be at least three days after the Start Date, but no more than seven days. Here is the calculation for the End Date minimum:
And this is how the Start Date appears on the form, with the days before today disabled:
And similarly for the End Date, with both minimum and maximum date restrictions based on the Start Date.
The date range for the End Date automatically updates based on changes to the Start Date, so if an End Date is specified and the Start Date is later changed, validation will catch this if the user does not fix it first.
Please note that range validation applies to Date, Number and Currency fields, not just the dates included in this example.