From 8f503d8d3158a6bca89d52cd460aadafafd234f5 Mon Sep 17 00:00:00 2001 From: Keith Wood Date: Thu, 16 Apr 2009 10:42:04 +0000 Subject: Datepicker: Fixed #3861 Manually entered date does not update altField --- ui/ui.datepicker.js | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) (limited to 'ui') diff --git a/ui/ui.datepicker.js b/ui/ui.datepicker.js index 3e01a6ae0..b6178d703 100644 --- a/ui/ui.datepicker.js +++ b/ui/ui.datepicker.js @@ -198,7 +198,8 @@ $.extend(Datepicker.prototype, { return false; }); } - input.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress). + input.addClass(this.markerClassName).keydown(this._doKeyDown). + keypress(this._doKeyPress).keyup(this._doKeyUp). bind("setData.datepicker", function(event, key, value) { inst.settings[key] = value; }).bind("getData.datepicker", function(event, key) { @@ -286,7 +287,8 @@ $.extend(Datepicker.prototype, { $target.removeClass(this.markerClassName). unbind('focus', this._showDatepicker). unbind('keydown', this._doKeyDown). - unbind('keypress', this._doKeyPress); + unbind('keypress', this._doKeyPress). + unbind('keyup', this._doKeyUp); } else if (nodeName == 'div' || nodeName == 'span') $target.removeClass(this.markerClassName).empty(); }, @@ -511,6 +513,27 @@ $.extend(Datepicker.prototype, { } }, + /* Synchronise manual entry and alternate field. */ + _doKeyUp: function(event) { + var inst = $.datepicker._getInst(event.target); + if (!$.datepicker._get(inst, 'altField')) + return true; + try { + var date = $.datepicker.parseDate($.datepicker._get(inst, 'dateFormat'), + (inst.input ? inst.input.val() : null), + $.datepicker._getFormatConfig(inst)); + if (date) { // only if valid + $.datepicker._setDateFromField(inst); + $.datepicker._updateAlternate(inst); + $.datepicker._updateDatepicker(inst); + } + } + catch (event) { + $.datepicker.log(event); + } + return true; + }, + /* Pop-up the date picker for a given input field. @param input element - the input field attached to the date picker or event - if triggered by focus */ -- cgit v1.2.3