diff --git a/jquery-ui-timepicker-addon.js b/jquery-ui-timepicker-addon.js index 0b11a972..16a636b0 100644 --- a/jquery-ui-timepicker-addon.js +++ b/jquery-ui-timepicker-addon.js @@ -107,14 +107,7 @@ $.extend(Timepicker.prototype, { _newInst: function($input, o) { var tp_inst = new Timepicker(), inlineSettings = {}; - - tp_inst.hour = tp_inst._defaults.hour; - tp_inst.minute = tp_inst._defaults.minute; - tp_inst.second = tp_inst._defaults.second; - tp_inst.ampm = ''; - tp_inst.$input = $input; - for (var attrName in this._defaults) { var attrValue = $input.attr('time:' + attrName); if (attrValue) { @@ -145,6 +138,12 @@ $.extend(Timepicker.prototype, { timepicker: tp_inst // add timepicker as a property of datepicker: $.datepicker._get(dp_inst, 'timepicker'); }); + tp_inst.hour = tp_inst._defaults.hour; + tp_inst.minute = tp_inst._defaults.minute; + tp_inst.second = tp_inst._defaults.second; + tp_inst.ampm = ''; + tp_inst.$input = $input; + if (o.altField) tp_inst.$altInput = $(o.altField) .css({ cursor: 'pointer' }) @@ -402,6 +401,7 @@ $.extend(Timepicker.prototype, { } tp_inst.hour_slider.slider("option", "value", h); tp_inst._onTimeChange(); + tp_inst._onSelectHandler(); }).css({ cursor: 'pointer', width: (100 / hourGridSize) + '%', @@ -421,6 +421,7 @@ $.extend(Timepicker.prototype, { $(this).click(function() { tp_inst.minute_slider.slider("option", "value", $(this).html()); tp_inst._onTimeChange(); + tp_inst._onSelectHandler(); }).css({ cursor: 'pointer', width: (100 / minuteGridSize) + '%', @@ -439,6 +440,7 @@ $.extend(Timepicker.prototype, { $(this).click(function() { tp_inst.second_slider.slider("option", "value", $(this).html()); tp_inst._onTimeChange(); + tp_inst._onSelectHandler(); }).css({ cursor: 'pointer', width: (100 / secondGridSize) + '%', @@ -461,16 +463,12 @@ $.extend(Timepicker.prototype, { } //Emulate datepicker onSelect behavior. Call on slidestop. - var onSelect = tp_inst._defaults['onSelect']; - if (onSelect) { - var inputEl = tp_inst.$input ? tp_inst.$input[0] : null; - var onSelectHandler = function() { - onSelect.apply(inputEl, [tp_inst.formattedDateTime, tp_inst]); // trigger custom callback*/ - } - this.hour_slider.bind('slidestop',onSelectHandler); - this.minute_slider.bind('slidestop',onSelectHandler); - this.second_slider.bind('slidestop',onSelectHandler); + var onSelectDelegate = function() { + tp_inst._onSelectHandler(); } + this.hour_slider.bind('slidestop',onSelectDelegate); + this.minute_slider.bind('slidestop',onSelectDelegate); + this.second_slider.bind('slidestop',onSelectDelegate); } }, @@ -573,6 +571,18 @@ $.extend(Timepicker.prototype, { this.timeDefined = true; if (hasChanged) this._updateDateTime(); }, + + //######################################################################## + // call custom onSelect. + // bind to sliders slidestop, and grid click. + //######################################################################## + _onSelectHandler: function() { + var onSelect = this._defaults['onSelect']; + var inputEl = this.$input ? this.$input[0] : null; + if (onSelect && inputEl) { + onSelect.apply(inputEl, [this.formattedDateTime, this]); + } + }, //######################################################################## // format the time all pretty...