diff options
author | Philip Graham <philip.robert.graham@gmail.com> | 2011-06-28 16:40:28 +0000 |
---|---|---|
committer | Philip Graham <philip.robert.graham@gmail.com> | 2011-06-28 16:40:28 +0000 |
commit | 76e2b98a312cfab3d754aac5068ad965e544840c (patch) | |
tree | 9f0707aba5a98901b22fea02cde2a43910dca5c2 | |
parent | 5c34cea06fb84777e1af72acf5ff0e9b60bd96f2 (diff) | |
download | jquery-ui-76e2b98a312cfab3d754aac5068ad965e544840c.tar.gz jquery-ui-76e2b98a312cfab3d754aac5068ad965e544840c.zip |
Updated guard against unparsed characters to allow extra characters as long as they are separated from the date by whitespace. This maintains compatibility with timepicker extensions.
Fixes #7244 - Datepicker: parseDate() does not throw an exception for long years
-rw-r--r-- | tests/unit/datepicker/datepicker_tickets.js | 14 | ||||
-rw-r--r-- | ui/jquery.ui.datepicker.js | 5 |
2 files changed, 16 insertions, 3 deletions
diff --git a/tests/unit/datepicker/datepicker_tickets.js b/tests/unit/datepicker/datepicker_tickets.js index d5249f905..10647eb13 100644 --- a/tests/unit/datepicker/datepicker_tickets.js +++ b/tests/unit/datepicker/datepicker_tickets.js @@ -30,12 +30,22 @@ test('Ticket 6827: formatDate day of year calculation is wrong during day lights }); test('Ticket #7244: date parser does not fail when too many numbers are passed into the date function', function() { - expect(1); + var date; try{ - var date = $.datepicker.parseDate('dd/mm/yy', '18/04/19881'); + date = $.datepicker.parseDate('dd/mm/yy', '18/04/19881'); + ok(false, "Did not properly detect an invalid date"); }catch(e){ ok("invalid date detected"); } + + try { + date = $.datepicker.parseDate('dd/mm/yy', '18/04/1988 @ 2:43 pm'); + equal(date.getDate(), 18); + equal(date.getMonth(), 3); + equal(date.getFullYear(), 1988); + } catch(e) { + ok(false, "Did not properly parse date with extra text separated by whitespace"); + } }); })(jQuery); diff --git a/ui/jquery.ui.datepicker.js b/ui/jquery.ui.datepicker.js index 1d3de7740..45107c969 100644 --- a/ui/jquery.ui.datepicker.js +++ b/ui/jquery.ui.datepicker.js @@ -1095,7 +1095,10 @@ $.extend(Datepicker.prototype, { } } if (iValue < value.length){ - throw "Extra/unparsed characters found in date: " + value.substring(iValue); + var extra = value.substr(iValue); + if (!/^\s+/.test(extra)) { + throw "Extra/unparsed characters found in date: " + extra; + } } if (year == -1) year = new Date().getFullYear(); |