Set Time - Date/Time Fields + Scripting
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-03-2011 07:59 AM
When a user selects a date in a date/time field, I would like the time to default to a value. For example, the user could pick 2011-01-03 10:54:32, I would like this to default to 2011-01-03 02:00:00.
Any ideas?
1 REPLY 1

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-03-2011 09:31 AM
I use a script to allow our users to enter in date fields using most delimiters, this scrip also defaults the time right now, I'm sure some minor modifications of this should do the trick. It's at least a starting point.
//To use this script;
//Type: OnChange
//Variable name: the date/time variable you want to apply it to.
function onChange(control, oldValue, newValue, isLoading)
{
checkdate(control);
//checkdate(g_form.getControl('start_date'));
function checkdate(objName) {
var datefield = objName;
if (chkdate(objName) == false) {
datefield.select();
//alert("That date is invalid. Please try again.");
datefield.focus();
return false;
}
else {
return true;
}
}
function chkdate(objName) {
var strDatestyle = "US"; //United States date style
//var strDatestyle = "EU"; //European date style
var strDate;
var strDateArray;
var strDay;
var strMonth;
var strYear;
var intday;
var intMonth;
var intYear;
var booFound = false;
var datefield = objName;
var strSeparatorArray = new Array("-"," ","/",".");
var intElementNr;
var err = 0;
var strMonthArray = new Array(12);
strMonthArray[0] = "Jan";
strMonthArray[1] = "Feb";
strMonthArray[2] = "Mar";
strMonthArray[3] = "Apr";
strMonthArray[4] = "May";
strMonthArray[5] = "Jun";
strMonthArray[6] = "Jul";
strMonthArray[7] = "Aug";
strMonthArray[8] = "Sep";
strMonthArray[9] = "Oct";
strMonthArray[10] = "Nov";
strMonthArray[11] = "Dec";
strDate = datefield.value;
if (strDate.length < 1) {
return true;
}
for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) {
if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) {
strDateArray = strDate.split(strSeparatorArray[intElementNr]);
if (strDateArray.length != 3) {
err = 1;
return false;
}
else {
strDay = strDateArray[0];
strMonth = strDateArray[1];
strYear = strDateArray[2];
}
booFound = true;
}
}
if (booFound == false) {
if (strDate.length>5) {
strDay = strDate.substr(0, 2);
strMonth = strDate.substr(2, 2);
strYear = strDate.substr(4);
}
}
if (isNaN(strYear)){
err = 1.5;
return false;
}
if (strYear.length == 2) {
strYear = '20' + strYear;
}
if (strYear.length == 1){
strYear = '200' + strYear;
}
// US style
if (strDatestyle == "US") {
strTemp = strDay;
strDay = strMonth;
strMonth = strTemp;
}
intday = parseInt(strDay, 10);
if (isNaN(intday)) {
err = 2;
return false;
}
intMonth = parseInt(strMonth, 10);
if (isNaN(intMonth)) {
for (i = 0;i<12;i++) {
if (strMonth.toUpperCase() == strMonthArray<i>.toUpperCase()) {
intMonth = i+1;
strMonth = strMonthArray<i>;
i = 12;
}
}
if (isNaN(intMonth)) {
err = 3;
return false;
}
}
intYear = parseInt(strYear, 10);
if (isNaN(intYear)) {
err = 4;
return false;
}
if (intMonth>12 || intMonth<1) {
err = 5;
return false;
}
if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) {
err = 6;
return false;
}
if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) {
err = 7;
return false;
}
if (intMonth == 2) {
if (intday < 1) {
err = 8;
return false;
}
if (LeapYear(intYear) == true) {
if (intday > 29) {
err = 9;
return false;
}
}
else {
if (intday > 28) {
err = 10;
return false;
}
}
}
if (strDatestyle == "US") {
//below is the value returned once you leave the field
datefield.value = strMonthArray[intMonth-1] + "-" + intday+"-" + intYear + " " + getTime();
}
else {
datefield.value = intday + " " + strMonthArray[intMonth-1] + " " + strYear;
}
return true;
}
function LeapYear(intYear) {
if (intYear % 100 == 0) {
if (intYear % 400 == 0) { return true; }
}
else {
if ((intYear % 4) == 0) { return true; }
}
return false;
}
function getTime() {
var dTime = new Date();
var hours = dTime.getHours();
var minute = dTime.getMinutes();
var second = dTime.getSeconds();
var period = "AM";
if (hours > 12) {
period = "PM"
}
else {
period = "AM";
}
hours = ((hours > 12) ? hours - 12 : hours)
if (hours < 10){hours = "0" + hours}
if (minute < 10){minute = "0" + minute}
if (second < 10){second = "0" + second}
return hours + ":" + minute + ":" + second + " " + period
}
}