Datepicker
Presenting you the most advanced date picker for your WordPress forms to cover a wide range of use cases.
Date tags
When using the datepicker you may use the following {tags}
in your conditional logic, variable fields and HTML elements
Date Format
Date formats vary largely across the globe, which is why this setting will be much appreciated in case you need to change to a different date format.
You are also allowed to use your own custom date format if needed. Just keep in mind when doing so that some features within Super Forms are not always compatible with a custom date format.
Possible date formats you can choose from are:
European - dd-mm-yy
31-08-2021Default - mm/dd/yy
08/31/2021ISO 8601 - yy-mm-dd
2021-08-31Short - d M, y
31 Aug, 21Medium - d MM, y
31 August, 21Full - DD, d MM, yy
Tuesday, 31 August, 2021Custom date format
Date range (min/max)
By default there is no date range defined. Meaning a user would be able to select an date based on the Year range
you defined.
The date range comes in handy when you want to allow a user to only select a date between a specified range.
Let's say you want a user to choose a date between tomorrow and 2 weeks ahead. In this case you can enter 1
under General > Date range (minimum)
, and 14
under General > Date range (maximum)
.
It is also possible to define negative numbers, so if you wish to let the user to select 1 week in the past, and 3 weeks in the future then you can define -7
(min) and 21
(max).
Connecting 2 datepickers
Connecting datepickers is useful whenever you need to allow users to book for a specific weekend or perhaps a week or weeks.
How to setup connected datepickers:
Let's assume that we want a user to select a dat range where the dates must be at least 1 day apart from each other and may not be apart from each other for more than 6 days.
The first step is to add 2 datepickers named from
and till
(for example).
Now edit the from
datepicker. Under Min. Connect with other datepicker
choose the till
datepicker.
The next step would be to define the total days they must be apart from eachother at a minimum. In our case we will set this to 2
.
Now when a user chooses 22 Jan 2021
in the from
datepicker, the till
datepickers first possible date to select would be 24 Jan 2021
.
Now we have to define tha maximum possible selection for the till
datepicker.
We are still editing the from
datepicker here, so we can now choose till
for the Max. Connect with other datepicker
option.
Now define the total days they are allowed to be apart from eachother at a maximum, which is 7
in our case, since we want to have the dates apart from eacother for a maximum of 6 days.
As you can see, we haven't touched the till
date. All the changes where made on the from
date which is the first date the user selects.
It is possible to also add more datepickers to this loop als long as it's logic to do.
You can also combine this with conditional logic so that a user would first need to choose date1, before date2 is visible and so on.
Year range
With the year range you can allow your users to only switch to a year within the given range.
You can change the year range of your datepicker under General > Year range
.
Let's say you want to allow your users to only select a data that is 2 years in the future and not beyond that. But you also don't want them to be able to select any year In that case you could define a range of -0:+2
.
Another example could be that you want to allow users to select a date that is at maximum 20 years in the past, and 15 years in the future. In which case you could enter -20:+15
as the range.
A couple of more examples:
-100:+5
100 years in the past, 5 years in the future-0:+5
0 years in the past, 5 years in the future-1:+3
1 year in the past, 3 years in the future0:+100
This allows all dates from 0 up to now and 100 years in the future
?> NOTE: Please keep in mind that the General > Date range (minimum)
and General > Date range (maximum)
will override the General > Year range
setting.
Return the current date as default value
There are many use cases that require the need for the current date. May it be the date of the order, or just a starting date for departure.
In this case you can enable the General > Return the current date as default value
.
This will populate the datepicker with date of today.
By default the user will be able to change/edit this date, if you want to prevent this you can set Advanced > Disable the input field
to Yes
. Another option would be to put the datepicker inside a column, and set the column to be invisible via General > Make column invisible
> Yes
.
Optionally allow users to select work days and or weekends
When your business or service is only during work days and not the weekends you can enable the General > Allow users to select work days
and disable the General > Allow users to select weekends
.
When your business or service is only during the weekends you can reverse them.
When your business or service is during both work days and weekends you can keep both enabled.
?> NOTE: Perhaps your business or service is only closed on Sunday, in this case you should use the General > Exclude specific days
setting and leave above options enabled.
Allow users to choose more than one date
By default a user can only choose 1 date. However you can change this by changing the General > Allow user to choose a maximum of X dates
to anything bigger than 1.
Let's say you want to allow the user to choose 3 dates. In that case you can change the number 1
to 3
. That way the user will be able to choose 3 dates individually.
Optionally you can also define the minimum dates a user is required to select under General > Require user to choose a minimum of X dates
.
When using this setting the dates selected by the user do not have to be next to each other, meaning the user could skip a specific date(s) in between their selected dates. For example: 01-01-2021, 01-02-2021, 02-05-2021
would be allowed. If you require a user to choose a date range without the option to skip dates in between you should instead use 2 datepickers that are connected with each other.
Exclude dates or a range of dates
This setting comes in use when excluding holidays and perhaps specific dates that your business or service is closed by default.
You can define your ranges under General > Exclude dates or a range of dates
.
You are also allowed to use tags if needed.
Examples:
2020-03-25
(excludes a specific date)2020-06-12;2020-07-26
(excludes a date range)01
(excludes first day for all months)10
(excludes 10th day for all months)Jan
(excludes the month January)Mar
(excludes the month March)Dec
(excludes the month December)
Exclude specific days
This setting is useful whenever your business or service is closed on a specific day of the week.
You can define which days you want to exclude under General > Exclude specific days
.
Where: 0 = Sunday and 1 = Monday etc.
When you want to exclude both Sundays and Mondays from the datepicker you can enter: 0,1
Override days exclusion
This setting works exactly the same as Exclude dates or a range of dates but is solely intended to override any days defined to be excluded under Exclude specific days
This can become useful in the event of the excluded day being in a month where you are not closed on those days and instead opened for business or service.
Let's say you are always closed on Sundays, with the exception of the month December. In that case you can define Dec
.
Any exclusion defined under Exclude dates or a range of dates
will be left untouched.
Allow users to change month/year
Enabled by default, to disallow users to change the month you can disable General > Allow users to change month
Enabled by default, to disallow users to change the year you can disable General > Allow users to change year
Change appearance
There are a couple of appearance options that you can change:
Show the month after the year in the header
This option is disabled by default. When enabled under General > Show the month after the year in the header
the user will be able to choose the month via a dropdown.
Show the week of the year
This option is disabled by default. When enabled under General > Show the week of the year
it will display the week numbers for each week.
Display dates in other months at the start or end of the current month
Disabled by default, enable via General > Display dates in other months at the start or end of the current month
When enabled you can also optionally enable the option General > Make days shown before or after the current month selectable
which allows the user to actually click on the date to choose it.
The number of months to show at once
By default this is set to 1
, which means only one month will be visible at once. When a user is viewing the month Jan, and clicks next, it will display the next month Feb.
When you increase this number to for instance 3
, it will show the months Jan, Feb, Mar
at once. When the user clicks to view the next months, it will display Apr, May, Jun
.
Return age in years/months/days (Calculator element)
By default when you use a datepicker in combination with the calculator element, the datepicker will contain the timestamp of the selected date.
With this you can basically do any tipe of manipulation and calculation required.
To make things easier for you the Calculator element simply adds an option for the Datepicker element called General > Return age as value instead of the date
.
When enabled the datepicker will not return the date, but instead it will return the age in years.
This is useful in case you need to know the age of a user, or perhaps the age of an object.
Another option is to let the datepicker keep returning it's timestamp, and instead enable Advanced > Enable birthdate calculations
on the calculator element itself.
This way you can have both the timestamp plus the age in years, months or days. Depending on what you choose under Advanced > Select which value to return for calculations
.
Localization
You can change the localization (language and format) of the datepicker via General > Choose a localization
. The following languages/formats are available:
English / Western (default)
Afrikaans
Algerian Arabic
Arabic
Azerbaijani
Belarusian
Bulgarian
Bosnian
Català
Czech
Welsh/UK
Danish
German
Greek
English/Australia
English/UK
English/New Zealand
Esperanto
Español
Estonian
Karrikas-ek
Persian
Finnish
Faroese
Canadian-French
Swiss-French
French
Galician
Hebrew
Hindi
Croatian
Hungarian
Armenian
Indonesian
Icelandic
Italian
Japanese
Georgian
Kazakh
Khmer
Korean
Kyrgyz
Luxembourgish
Lithuanian
Latvian
Macedonian
Malayalam
Malaysian
Norwegian Bokmål
Dutch (Belgium)
Dutch
Norwegian Nynorsk
Norwegian
Polish
Brazilian
Portuguese
Romansh
Romanian
Russian
Slovak
Slovenian
Albanian
Serbian
Swedish
Tamil
Thai
Tajiki
Turkish
Ukrainian
Vietnamese
Chinese zh-CN
Chinese zh-HK
Chinese zh-TW
Demo Forms
The following demo forms are available under Super Forms > Demos
:
Calculate Days Between Dates (requires Calculator element)
Calculate Age (requires Calculator element)
Example & Tutorial
Different time range based on selected day
Let's say you have a reservation form and you have different working hours during the week.
On Sunday and Monday you are closed
On Friday and Saturday you are opened from 13:00 till 22:00
On other days you are opened from 13:00 till 18:00
The full example code can be found below, which you can simply copy/past under the Code
TAB on your builder page.
In order to accomplish this, there are a couple of things that you need to do. The steps made to create this form are as follows:
1. Adding the elements
Add a datepicker field
Form Elements > Date
and name itdate
Add a total of 2 timepicker fields
Form Elements > Time
and name themother
,friday_saturday
Add a hidden field
Form Elements > Hidden
and name ittime
(we will make it a variable field which will hold either the value fromother
orfriday_saturday
)Edit the
other
timepicker and changeGeneral > The time that should appear first...
to13:00
andGeneral > The time that should appear last...
to18:00
Edit the
friday_saturday
timepicker and changeGeneral > The time that should appear first...
to13:00
andGeneral > The time that should appear last...
to22:00
2. Changing the date format
In our example we need to know which day the user selected (not to be confused with "which date"). We need to know the day of the week as in "Monday", "Tuesday" etc. Based on this we can display the correct timepicker via conditional logic. Edit the date
field and change the date format General > Date Format
to Full
.
Since we are closed on Sunday and Monday we must also exclude these days from the datepicker. To do so edit the date
field and set General > Exclude specific days
to 0,1
. This will make sure both Sundays and Mondays can't be selected by the user.
3. Conditionally show the timepickers
Now we have to define the conditional logic for our timepickers so they are displayed accordingly.
First let's edit the other
timepicker so that it will be displayed when the date
does not contain the value Fri
and Sat
.
Set Conditional Logic > Action
to Show
and set Conditional Logic > When to Trigger?
to All
.
Define the conditional logic as follows:
[{date}
| !! Not contains
| Fri
] AND [{date}
| !! Not contains
| Sat
]
Now edit the friday_saturday
timepicker so that it will be displayed when the date
contains either the value Fri
or Sat
.
Set Conditional Logic > Action
to Show
and set Conditional Logic > When to Trigger?
to All
.
Define the conditional logic as follows:
[{date}
| !! Contains
| Fri
] OR [{date}
| !! Contains
| Sat
]
Test to see if the timepickers are displayed accordingly, if everything is correctly defined you should now only be able to choose a time between 13:00 and 22:00 for the Fridays and Saturdays. And for the other days between 13:00 and 18:00. You should also not be able to select the Sundays and Mondays because you excluded these days on the date
field.
4. Merging timepickers into one
If you setup the conditional logic correctly you should only see 1 timepicker at once. Which means that only one timepicker will be send via E-mail and stored in the Contact Entry.
However they do not share the same field name right now (other
and friday_saturday
).
This might not be a problem in normal situations, because those fields can still share the same E-mail label. However when you are using a third party service, or doing a POST requires. Or any other data handling (exproting entries for instance) that depends on the field name(s), it might be required to always have the same field name no matter what field was conditionally visible.
?> TIP: In general it is good practise to use a variable field in these situations.
If you decide to use a variable field to merge multiple fields into one, you will most likely want to exclude the others fields from both emails and from being saved in the contact entry. You can do so by editing both timepickers other
and friday_saturday
and setting Advanced > Exclude from email
to Exclude from all emails
. And disable Advanced > Do not save field in Contact Entry
.
Now edit your hidden field time
and set Conditional Variable (dynamic value) > Make field variable
to Enabled (make variable)
.
In this case there are 2 different ways to configure the conditional logic. The first one being the simples which is to do a check on the datepicker to see if it is not empty. When it is not empty we will apply the condition and therefore grab the values from the timepicker and combine them. In this case there will always be one timepicker conditionally hidden which makes this condition possible:
[{date}
- != Not equal
- ""
]
When above conditions are met set following value:
{other}{friday_saturday}
Explanation of the above conditional logic:
The above condition simply checks if the date
field is filled out (an date was selected by the user) which means the tag {date}
would not be empty. Which means the condition holds true and therefore is applied. Which means that the value of the hidden field would be updated to whatever the tags {other}{friday_saturday}
holds. Which would hold the selected time by the user for both the other
timepicker and the friday_saturday
timepicker. However only 1 of the timepickers would be visible at a given time, so either {other}
or {friday_saturday}
will always be an empty string (undefined) because conditionally hidden. If the above conditional logic doesn't make sense to you right now then please see the below alternative which might seem more logical.
A more logical conditional logic (to merge the 2 timepickers) would be as follows:
[{other}
- != Not equal
- ""
]
When above conditions are met set following value:
{other}
Now add another conditional rule by clicking on the [+]
icon
[{friday_saturday}
- != Not equal
- ""
]
When above conditions are met set following value:
{friday_saturday}
Explanation of the above conditional logic:
The above conditional logic consists out of 2 conditions. The first one checks if the other
timepicker is not empty, and if so it will populate the time
field to be whatever value {other}
returns. Which is the time itself in case of the other
timepicker being filled out by the user and not conditionally hidden.
The same applies for friday_saturday
timepicker.
Example form code
You can copy/paste the below code under Code
TAB on your form builder to see it in action.
The only difference in the below form code is that we added a HTML element to easily debug / display the selected values. This way you can see what a hidden field's value contains, and thus what our variable field contains when changing the datepicker and timepicker.
Last updated