erikTsomik
asked on
AnyTime Date/time picker validation
I am using AnyTime dateTime plugin. I set to use 2 fields start time and end time. Now I need to validate these 2 fields. So the end time never greater than the start time. Also the first time the popup does not show up only once i click on either startTime or endTime
<script>
$(document).ready(function() {
$("#startTime").AnyTime_noPicker().removeAttr("disabled").AnyTime_picker({format:"%l:%i %p",earliest:new Date(2000,0,1,0,0,0)});
$("#endTime").AnyTime_noPicker().removeAttr("disabled").AnyTime_picker({format:"%l:%i %p",earliest:new Date(2000,0,1,0,0,0)});
var rangeDemoFormat = "%l:%i %p";
var rangeDemoConv = new AnyTime.Converter({format:rangeDemoFormat});
var oneDay = 60*1*1000;
$("#startTime").change( function() {
var fromDay = rangeDemoConv.parse($("#startTime").val()).getTime();
var ToDay = rangeDemoConv.parse($("#endTime").val()).getTime();
//alert(fromDay);
//alert(ToDay);
if (fromDay > ToDay) {
var ninetyDaysLater = new Date(fromDay + oneDay);
$("#endTime").AnyTime_noPicker().removeAttr("disabled").val(rangeDemoConv.format(ninetyDaysLater)).AnyTime_picker({
earliest: ninetyDaysLater,
format: rangeDemoFormat
});
}
});
$("#endTime").change( function() {
var fromDay = rangeDemoConv.parse($("#endTime").val()).getTime();
var ToDay = rangeDemoConv.parse($("#startTime").val()).getTime();
if (fromDay < ToDay) {
var ninetyDaysLater = new Date(fromDay - oneDay);
$("#startTime").AnyTime_noPicker().removeAttr("disabled").val(rangeDemoConv.format(ninetyDaysLater)).AnyTime_picker({
earliest: ninetyDaysLater,
format: rangeDemoFormat
});
}
});
});
</script>
You could use javascript to put a default date in there (make it the current date by default), that should help it show up. As for validating it, if you turn both times into a timestamp (numbers) you can check easily to make sure the start date/time is not higher than the end date/time. I haven't used the control element so I'm not sure how to do it off the top of my head but the logic should be correct.
ASKER
I need a time format. Please provide some examples of validation
You can format the date and/or time however you like. Javascript has a date object you can use to get whatever details you need from it. Check this out.
var currentDate = new Date()
var day = currentDate.getDate()
var month = currentDate.getMonth() + 1
var year = currentDate.getFullYear()
document.write("<b>" + day + "/" + month + "/" + year + "</b>")
That will display the date as 7/5/2012 but once you have the different date parts and time parts you can display them however you want. The same date object can return time components like this
var currentTime = new Date()
var hours = currentTime.getHours()
var minutes = currentTime.getMinutes()
var seconds = currentTime.getSeconds()
if (minutes < 10)
minutes = "0" + minutes // pad the minutes if less than 10
if (seconds < 10)
seconds = "0" + seconds // pad the seconds if less than 10
document.write("<b>" + hours + ":" + minutes + ":" + seconds + " </b>")
That will give you 10:35:00 in (bold type) once again you can display this any way you want.
The important thing to note is that the date object will give you all of your information about the date and the time.
Working out am and pm is easy. Here is a list of everything you can do with the date() object.
http://www.quackit.com/javascript/javascript_date_and_time_functions.cfm
var currentDate = new Date()
var day = currentDate.getDate()
var month = currentDate.getMonth() + 1
var year = currentDate.getFullYear()
document.write("<b>" + day + "/" + month + "/" + year + "</b>")
That will display the date as 7/5/2012 but once you have the different date parts and time parts you can display them however you want. The same date object can return time components like this
var currentTime = new Date()
var hours = currentTime.getHours()
var minutes = currentTime.getMinutes()
var seconds = currentTime.getSeconds()
if (minutes < 10)
minutes = "0" + minutes // pad the minutes if less than 10
if (seconds < 10)
seconds = "0" + seconds // pad the seconds if less than 10
document.write("<b>" + hours + ":" + minutes + ":" + seconds + " </b>")
That will give you 10:35:00 in (bold type) once again you can display this any way you want.
The important thing to note is that the date object will give you all of your information about the date and the time.
Working out am and pm is easy. Here is a list of everything you can do with the date() object.
http://www.quackit.com/javascript/javascript_date_and_time_functions.cfm
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
I am usin anyTime Date/time picker
and I gave you an alternative
ASKER
I can only use Any Time Date?time picker since it was used all over my system
Currently you set up the picker to show time only
var rangeDemoFormat = "%l:%i %p";
var rangeDemoConv = new AnyTime.Converter({format:
var oneDay = 60*1*1000;
and one day is 24*60*60*1000