From 7a6e5f04aa090109b39be47764ddd66edb43934d Mon Sep 17 00:00:00 2001 From: NetForce1 Date: Thu, 20 Sep 2012 11:55:15 +0300 Subject: [PATCH 1/2] fix splitDateTime for plain datepicker When using a plain datepicker, getDate returns always the current date because splitDateTime puts the date in the time part of the result. This change only splits when the input actually contains a time. --- jquery-ui-timepicker-addon.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jquery-ui-timepicker-addon.js b/jquery-ui-timepicker-addon.js index 442a35f..fa2b2c0 100644 --- a/jquery-ui-timepicker-addon.js +++ b/jquery-ui-timepicker-addon.js @@ -1551,7 +1551,7 @@ timePartsLen = timeParts.length; } - if (allPartsLen > 0) { + if (allPartsLen > 1) { return [ allParts.splice(0,allPartsLen-timePartsLen).join(separator), allParts.splice(0,timePartsLen).join(separator) From b0b8458e5763b85d83958c5dffb4bf9e1148dfe2 Mon Sep 17 00:00:00 2001 From: NetForce1 Date: Thu, 20 Sep 2012 18:18:57 +0300 Subject: [PATCH 2/2] parseDate fails when dateFormat contains separator MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When the dateFormat contains the separator that is used to split date and time, parseDate fails. Also, since parseDate has no access to the instance, it does not know the correct timeFormat, so splitting is not always correct.  Restoring the old hack of relying on datepickers error message seems to fix these issues. --- jquery-ui-timepicker-addon.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/jquery-ui-timepicker-addon.js b/jquery-ui-timepicker-addon.js index fa2b2c0..8872d77 100644 --- a/jquery-ui-timepicker-addon.js +++ b/jquery-ui-timepicker-addon.js @@ -1425,8 +1425,16 @@ */ $.datepicker._base_parseDate = $.datepicker.parseDate; $.datepicker.parseDate = function(format, value, settings) { - var splitRes = splitDateTime(format, value, settings); - return $.datepicker._base_parseDate(format, splitRes[0], settings); + var date; + try { + date = this._base_parseDate(format, value, settings); + } catch (err) { + // Hack! The error message ends with a colon, a space, and + // the "extra" characters. We rely on that instead of + // attempting to perfectly reproduce the parsing algorithm. + date = this._base_parseDate(format, value.substring(0,value.length-(err.length-err.indexOf(':')-2)), settings); + } + return date; }; /*