Skip to content

Commit da98d6c

Browse files
Fix bug in setDate, still doesnt set properly before picker is shown
1 parent e5c7cfb commit da98d6c

File tree

1 file changed

+27
-18
lines changed

1 file changed

+27
-18
lines changed

jquery-ui-timepicker-addon.js

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@
137137
tp_inst.timeDefined = (treg) ? true : false;
138138

139139
if (typeof(dp_inst.stay_open) !== 'boolean' || dp_inst.stay_open === false) {
140-
// wait for datepicker to create itself.. 60% of the time it works every time..
140+
// wait for datepicker to create itself.. 60% of the time it works every time..
141141
setTimeout(function() {
142142
tp_inst.injectTimePicker(dp_inst, tp_inst);
143143
}, 10);
@@ -453,9 +453,9 @@
453453
// on time change is also called when the time is updated in the text field
454454
//########################################################################
455455
onTimeChange: function(dp_inst, tp_inst) {
456-
var hour = tp_inst.hour_slider.slider('value');
457-
var minute = tp_inst.minute_slider.slider('value');
458-
var second = tp_inst.second_slider.slider('value');
456+
var hour = (tp_inst.hour_slider)? tp_inst.hour_slider.slider('value') : tp_inst.hour;
457+
var minute = (tp_inst.minute_slider)? tp_inst.minute_slider.slider('value') : tp_inst.minute;
458+
var second = (tp_inst.second_slider)? tp_inst.second_slider.slider('value') : tp_inst.second;
459459
var ampm = (hour < 11.5) ? 'AM' : 'PM';
460460
hour = (hour >= 11.5 && hour < 12) ? 12 : hour;
461461
var hasChanged = false;
@@ -472,7 +472,8 @@
472472
tp_inst.ampm = ampm;
473473

474474
tp_inst.formatTime(tp_inst);
475-
tp_inst.$timeObj.text(tp_inst.formattedTime);
475+
if(tp_inst.$timeObj)
476+
tp_inst.$timeObj.text(tp_inst.formattedTime);
476477

477478
if (hasChanged) {
478479
tp_inst.updateDateTime(dp_inst, tp_inst);
@@ -525,7 +526,7 @@
525526
var formatCfg = $.datepicker._getFormatConfig(dp_inst);
526527
this.formattedDate = $.datepicker.formatDate(dateFmt, (dt === null ? new Date() : dt), formatCfg);
527528
var formattedDateTime = this.formattedDate;
528-
var timeAvailable = dt !== null && tp_inst.timeDefined;
529+
var timeAvailable = ((dt !== null && tp_inst.timeDefined) !== true)? false : true;
529530

530531
if(this.defaults.timeOnly === true){
531532
formattedDateTime = this.formattedTime;
@@ -541,8 +542,10 @@
541542
}
542543

543544
this.formattedDateTime = formattedDateTime;
544-
this.$input.val(formattedDateTime);
545-
this.$input.trigger("change");
545+
if(!dp_inst.inline && this.$input){
546+
this.$input.val(formattedDateTime);
547+
this.$input.trigger("change");
548+
}
546549
},
547550

548551
setDefaults: function(settings) {
@@ -633,7 +636,7 @@
633636
timepicker: tp // add timepicker as a property of datepicker: $.datepicker._get(dp_inst, 'timepicker');
634637
});
635638

636-
return $(this).datepicker(tp.defaults);
639+
return input.datepicker(tp.defaults);
637640

638641
};
639642

@@ -738,7 +741,7 @@
738741

739742
var tp_inst = $.datepicker._get(inst, 'timepicker');
740743

741-
if(tp_inst && tp_inst.hour_slider && tp_inst.minute_slider && tp_inst.second_slider){
744+
if(tp_inst){
742745
var hour = date.getHours();
743746
var minute = date.getMinutes();
744747
var second = date.getSeconds();
@@ -749,30 +752,35 @@
749752
minute = tp_inst.defaults.minuteMin;
750753
second = tp_inst.defaults.secondMin;
751754
}
752-
753-
tp_inst.hour_slider.slider('value', hour );
754-
tp_inst.minute_slider.slider('value', minute );
755-
tp_inst.second_slider.slider('value', second );
756755

756+
if(tp_inst.hour_slider && tp_inst.minute_slider && tp_inst.second_slider){
757+
tp_inst.hour_slider.slider('value', hour );
758+
tp_inst.minute_slider.slider('value', minute );
759+
tp_inst.second_slider.slider('value', second );
760+
}
761+
else{
762+
tp_inst.hour = hour;
763+
tp_inst.minute = minute;
764+
tp_inst.second = second;
765+
}
766+
757767
tp_inst.onTimeChange(inst, tp_inst);
758768
}
759-
760769
};
761-
770+
762771
//#######################################################################################
763772
// override getDate() to allow getting time too within date object
764773
//#######################################################################################
765774
$.datepicker._base_setDate = $.datepicker._setDate;
766775
$.datepicker._setDate = function(inst, date, noChange) {
767776
var tp_inst = $.datepicker._get(inst, 'timepicker');
768777
var tp_date = new Date(date.getYear(), date.getMonth(), date.getDay(), date.getHours(), date.getMinutes(), date.getSeconds());
769-
778+
770779
$.datepicker._base_setDate(inst, date, noChange);
771780

772781
if(tp_inst){
773782
this._setTime(inst, tp_date);
774783
}
775-
776784

777785
};
778786

@@ -808,3 +816,4 @@
808816
$.timepicker = new Timepicker(true); // singleton instance
809817
})(jQuery);
810818

819+

0 commit comments

Comments
 (0)