diff --git a/ui/ui.datepicker.js b/ui/ui.datepicker.js index d547e4fcb..425a1f79f 100644 --- a/ui/ui.datepicker.js +++ b/ui/ui.datepicker.js @@ -25,6 +25,7 @@ var PROP_NAME = 'datepicker'; function Datepicker() { this.debug = false; // Change this to true to start debugging this._curInst = null; // The current instance in use + this._keyEvent = false; // If the last event was a key event this._disabledInputs = []; // List of date picker inputs that have been disabled this._datepickerShowing = false; // True if the popup picker is showing , false if not this._inDialog = false; // True if showing within a "dialog", false if not @@ -470,13 +471,17 @@ $.extend(Datepicker.prototype, { _doKeyDown: function(e) { var inst = $.datepicker._getInst(e.target); var handled = true; + inst._keyEvent = true; if ($.datepicker._datepickerShowing) switch (e.keyCode) { case 9: $.datepicker._hideDatepicker(null, ''); break; // hide on tab out - case 13: if ($('td.ui-datepicker-days-cell-over', inst.dpDiv)[0]) + case 13: if ($('td.ui-datepicker-days-cell-over, td.ui-datepicker-current-day', inst.dpDiv)[0]) { $.datepicker._selectDay(e.target, inst.selectedMonth, inst.selectedYear, - $('td.ui-datepicker-days-cell-over', inst.dpDiv)[0]); + $('td.ui-datepicker-days-cell-over, td.ui-datepicker-current-day', inst.dpDiv)[0]); + } else { + $.datepicker._hideDatepicker(null, $.datepicker._get(inst, 'duration')); + } return false; // don't submit the form break; // select the value on enter case 27: $.datepicker._hideDatepicker(null, $.datepicker._get(inst, 'duration')); @@ -521,8 +526,9 @@ $.extend(Datepicker.prototype, { } else if (e.keyCode == 36 && e.ctrlKey) // display the date picker on ctrl+home $.datepicker._showDatepicker(this); - else + else { handled = false; + } if (handled) { e.preventDefault(); e.stopPropagation(); @@ -1454,11 +1460,13 @@ $.extend(Datepicker.prototype, { html += '' + ($.browser.msie && parseInt($.browser.version,10) < 7 && !inst.inline ? '' : ''); + inst._keyEvent = false; return html; },