Date field validation
- Dmitry Kozlov
- Site Admin
- Posts: 1524
- Joined: Thu Jun 07, 2012
Hi,
The code from my previous message retrives a date-object based on both date and time. So you can use it to compare two date and time fields:
The code from my previous message retrives a date-object based on both date and time. So you can use it to compare two date and time fields:
Code: Select all
function getHours(str) {
var parts = str.split(' ');
if (parts[1] == 'PM') {
return parseInt(parts[0]) + 12
}
parseInt(parts[0])
}
var dt = fd.field('startDate').value();
var dateParts = dt[0].split('/');
var startDate = new Date(dateParts[2], dateParts[0]-1, dateParts[1], getHours(dt[1]), dt[2]);
dt = fd.field('endDate').value();
dateParts = dt[0].split('/');
var endDate = new Date(dateParts[2], dateParts[0]-1, dateParts[1], getHours(dt[1]), dt[2]);
alert(endDate > startDate);
-
- Posts: 76
- Joined: Wed Jan 21, 2015
Thank you so much Dimitry. This worked great! When would be the best time to do this validation? On submit? would that be fd.onsubmit( );
-
- Posts: 76
- Joined: Wed Jan 21, 2015
Thank you so much Dimitry. This worked great! When would be the best time to do this validation? On submit? would that be fd.onsubmit( );
- Dmitry Kozlov
- Site Admin
- Posts: 1524
- Joined: Thu Jun 07, 2012
Hi,
Yes, if you need to validate the fields before the submission, just put this code into onsubmit handler:
Yes, if you need to validate the fields before the submission, just put this code into onsubmit handler:
Code: Select all
function getHours(str) {
var parts = str.split(' ');
if (parts[1] == 'PM') {
return parseInt(parts[0]) + 12
}
parseInt(parts[0])
}
fd.onsubmit(function() {
var dt = fd.field('startDate').value();
var dateParts = dt[0].split('/');
var startDate = new Date(dateParts[2], dateParts[0]-1, dateParts[1], getHours(dt[1]), dt[2]);
dt = fd.field('endDate').value();
dateParts = dt[0].split('/');
var endDate = new Date(dateParts[2], dateParts[0]-1, dateParts[1], getHours(dt[1]), dt[2]);
if (endDate < startDate) {
alert('End Date must be greater than Start Date.');
return false;
}
return true;
});
-
- Posts: 76
- Joined: Wed Jan 21, 2015
When I put the code in the alert displays as expected. When I change the time so the endDate is greater than the startDate the alert continues to display.
- Dmitry Kozlov
- Site Admin
- Posts: 1524
- Joined: Thu Jun 07, 2012
Please, try to trace variables before the comparison. Also, ensure that you don't have JS-errors in the browser console.
Code: Select all
alert(endDate);
alert(startDate);
if (endDate < startDate) {
alert('End Date must be greater than Start Date.');
return false;
}
-
- Posts: 16
- Joined: Mon Nov 24, 2014
You need to fix the gethours function for this to work put in ; and retun
function getHours(str) {
var parts = str.split(' ');
if (parts[1] == 'PM') {
return parseInt(parts[0]) + 12;
}
return parseInt(parts[0]);
}
function getHours(str) {
var parts = str.split(' ');
if (parts[1] == 'PM') {
return parseInt(parts[0]) + 12;
}
return parseInt(parts[0]);
}
-
- Posts: 16
- Joined: Mon Nov 24, 2014
Actually, I have a correction to my correction. It seems if it is 12 PM and if you add 12 the value would be
24 so it would add a day. This should be solid now. For DateTime Comparison
function getHours(str) {
var parts = str.split(' ');
var partHour = 0;
if (parts[1] == 'PM') {
partHour = parseInt(parts[0])
if (partHour != 12){
return parseInt(parts[0]) + 12;
}
}
return parseInt(parts[0]);
}
24 so it would add a day. This should be solid now. For DateTime Comparison
function getHours(str) {
var parts = str.split(' ');
var partHour = 0;
if (parts[1] == 'PM') {
partHour = parseInt(parts[0])
if (partHour != 12){
return parseInt(parts[0]) + 12;
}
}
return parseInt(parts[0]);
}
I am checking if the date and time field is empty, but can't make it work, here is what i have after reading the above:
function getHours(str) {
var parts = str.split(' ');
if (parts[1] == 'PM') {
return parseInt(parts[0]) + 12;
}
return parseInt(parts[0]);
}
fd.onsubmit (function () {
var dt = fd.field('DueDate').value()
if (Boolean(dt[0])) {
var dateParts = dt[0].split('/');
var date = new Date(dateParts[2], dateParts[0]-1, dateParts[1], getHours(dt[1]), dt[2]);
alert('Fill out date');
}
return false;
}
return true;
});
function getHours(str) {
var parts = str.split(' ');
if (parts[1] == 'PM') {
return parseInt(parts[0]) + 12;
}
return parseInt(parts[0]);
}
fd.onsubmit (function () {
var dt = fd.field('DueDate').value()
if (Boolean(dt[0])) {
var dateParts = dt[0].split('/');
var date = new Date(dateParts[2], dateParts[0]-1, dateParts[1], getHours(dt[1]), dt[2]);
alert('Fill out date');
}
return false;
}
return true;
});
-
- Information
-
Who is online
Users browsing this forum: No registered users and 2 guests