From e66ac892aa54f6cc38e4b9adffc9d0ef255d127f Mon Sep 17 00:00:00 2001 From: Simon Wade Date: Wed, 29 Aug 2012 01:47:53 +1000 Subject: [PATCH 1/3] - Added support for specifying a defaultValue that will be used when the text input fires a focus event and has an empty value - Added support for providing separate options for the start and end inputs in the range methods using "start" and "end" properties in the options object --- jquery-ui-timepicker-addon.js | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/jquery-ui-timepicker-addon.js b/jquery-ui-timepicker-addon.js index 2e59d6f..971276f 100644 --- a/jquery-ui-timepicker-addon.js +++ b/jquery-ui-timepicker-addon.js @@ -95,7 +95,8 @@ function Timepicker() { timezoneIso8601: false, timezoneList: null, addSliderAccess: false, - sliderAccessArgs: null + sliderAccessArgs: null, + defaultValue: null, }; $.extend(this._defaults, this.regional['']); } @@ -747,6 +748,22 @@ $.extend(Timepicker.prototype, { // on time change is also called when the time is updated in the text field //######################################################################## _onTimeChange: function() { + if( !this.$input.val() && this._defaults.defaultValue ) { + this.$input.val(this._defaults.defaultValue); + var inst = $.datepicker._getInst(this.$input.get(0)), + tp_inst = $.datepicker._get(inst, 'timepicker'); + if (tp_inst) { + if (tp_inst._defaults.timeOnly && (inst.input.val() != inst.lastVal)) { + try { + $.datepicker._updateDatepicker(inst); + } + catch (err) { + $.datepicker.log(err); + } + } + } + } + var hour = (this.hour_slider) ? this.hour_slider.slider('value') : false, minute = (this.minute_slider) ? this.minute_slider.slider('value') : false, second = (this.second_slider) ? this.second_slider.slider('value') : false, @@ -1591,23 +1608,23 @@ $.timepicker.dateRange = function( startTime, endTime, options, method ) { * @return jQuery */ $.timepicker.handleRange = function( method, startTime, endTime, options ) { - $.fn[method].call(startTime, $.extend({}, { + $.fn[method].call(startTime, $.extend({ onClose: function(dateText, inst) { checkDates(this, endTime, dateText); }, onSelect: function (selectedDateTime) { selected(this, endTime, 'minDate'); } - }, options) + }, options, options.start) ); - $.fn[method].call(endTime, $.extend({}, { + $.fn[method].call(endTime, $.extend({ onClose: function(dateText, inst) { checkDates(this, startTime, dateText); }, onSelect: function (selectedDateTime) { selected(this, startTime, 'maxDate'); } - }, options) + }, options, options.end) ); // timepicker doesn't provide access to its 'timeFormat' option, // nor could I get datepicker.formatTime() to behave with times, so I From f2cfbcd65bda496d2963fddce896b7637c32e3a4 Mon Sep 17 00:00:00 2001 From: Simon Wade Date: Wed, 29 Aug 2012 01:50:22 +1000 Subject: [PATCH 2/3] Fixed trailing comma --- 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 971276f..fc559f0 100644 --- a/jquery-ui-timepicker-addon.js +++ b/jquery-ui-timepicker-addon.js @@ -96,7 +96,7 @@ function Timepicker() { timezoneList: null, addSliderAccess: false, sliderAccessArgs: null, - defaultValue: null, + defaultValue: null }; $.extend(this._defaults, this.regional['']); } From 313cfe4a282af376a3a8f8f033c365334bdbe9ba Mon Sep 17 00:00:00 2001 From: Simon Wade Date: Wed, 29 Aug 2012 02:13:39 +1000 Subject: [PATCH 3/3] Changed to only set defaultValue on focus to allow user to unset the input value --- jquery-ui-timepicker-addon.js | 38 ++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/jquery-ui-timepicker-addon.js b/jquery-ui-timepicker-addon.js index fc559f0..c13f7b7 100644 --- a/jquery-ui-timepicker-addon.js +++ b/jquery-ui-timepicker-addon.js @@ -230,6 +230,10 @@ $.extend(Timepicker.prototype, { if(tp_inst._defaults.maxDateTime !== undefined && tp_inst._defaults.maxDateTime instanceof Date) { tp_inst._defaults.maxDate = new Date(tp_inst._defaults.maxDateTime.getTime()); } + tp_inst.$input.bind('focus', function() { + tp_inst._onFocus(); + }); + return tp_inst; }, @@ -748,22 +752,6 @@ $.extend(Timepicker.prototype, { // on time change is also called when the time is updated in the text field //######################################################################## _onTimeChange: function() { - if( !this.$input.val() && this._defaults.defaultValue ) { - this.$input.val(this._defaults.defaultValue); - var inst = $.datepicker._getInst(this.$input.get(0)), - tp_inst = $.datepicker._get(inst, 'timepicker'); - if (tp_inst) { - if (tp_inst._defaults.timeOnly && (inst.input.val() != inst.lastVal)) { - try { - $.datepicker._updateDatepicker(inst); - } - catch (err) { - $.datepicker.log(err); - } - } - } - } - var hour = (this.hour_slider) ? this.hour_slider.slider('value') : false, minute = (this.minute_slider) ? this.minute_slider.slider('value') : false, second = (this.second_slider) ? this.second_slider.slider('value') : false, @@ -878,6 +866,24 @@ $.extend(Timepicker.prototype, { } this.$input.trigger("change"); + }, + + _onFocus: function() { + if( !this.$input.val() && this._defaults.defaultValue ) { + this.$input.val(this._defaults.defaultValue); + var inst = $.datepicker._getInst(this.$input.get(0)), + tp_inst = $.datepicker._get(inst, 'timepicker'); + if (tp_inst) { + if (tp_inst._defaults.timeOnly && (inst.input.val() != inst.lastVal)) { + try { + $.datepicker._updateDatepicker(inst); + } + catch (err) { + $.datepicker.log(err); + } + } + } + } } });