@@ -429,7 +429,7 @@ $.extend(Timepicker.prototype, {
429
429
var h = $ ( this ) . html ( ) ;
430
430
if ( o . ampm ) {
431
431
var ap = h . substring ( 2 ) . toLowerCase ( ) ,
432
- aph = parseInt ( h . substring ( 0 , 2 ) ) ;
432
+ aph = parseInt ( h . substring ( 0 , 2 ) , 10 ) ;
433
433
if ( ap == 'a' ) {
434
434
if ( aph == 12 ) h = 0 ;
435
435
else h = aph ;
@@ -519,8 +519,8 @@ $.extend(Timepicker.prototype, {
519
519
520
520
if ( ! this . _defaults . showTimepicker ) return ; // No time so nothing to check here
521
521
522
- if ( this . _defaults . minDateTime !== null && dp_date ) {
523
- var minDateTime = this . _defaults . minDateTime ,
522
+ if ( $ . datepicker . _get ( dp_inst , ' minDateTime' ) !== null && dp_date ) {
523
+ var minDateTime = $ . datepicker . _get ( dp_inst , ' minDateTime' ) ,
524
524
minDateTimeDate = new Date ( minDateTime . getFullYear ( ) , minDateTime . getMonth ( ) , minDateTime . getDate ( ) , 0 , 0 , 0 , 0 ) ;
525
525
526
526
if ( this . hourMinOriginal === null || this . minuteMinOriginal === null || this . secondMinOriginal === null ) {
@@ -552,8 +552,8 @@ $.extend(Timepicker.prototype, {
552
552
}
553
553
}
554
554
555
- if ( this . _defaults . maxDateTime !== null && dp_date ) {
556
- var maxDateTime = this . _defaults . maxDateTime ,
555
+ if ( $ . datepicker . _get ( dp_inst , ' maxDateTime' ) !== null && dp_date ) {
556
+ var maxDateTime = $ . datepicker . _get ( dp_inst , ' maxDateTime' ) ,
557
557
maxDateTimeDate = new Date ( maxDateTime . getFullYear ( ) , maxDateTime . getMonth ( ) , maxDateTime . getDate ( ) , 0 , 0 , 0 , 0 ) ;
558
558
559
559
if ( this . hourMaxOriginal === null || this . minuteMaxOriginal === null || this . secondMaxOriginal === null ) {
@@ -607,13 +607,18 @@ $.extend(Timepicker.prototype, {
607
607
minute = ( this . minute_slider ) ? this . minute_slider . slider ( 'value' ) : false ,
608
608
second = ( this . second_slider ) ? this . second_slider . slider ( 'value' ) : false ,
609
609
timezone = ( this . timezone_select ) ? this . timezone_select . val ( ) : false ;
610
-
610
+
611
+ if ( typeof ( hour ) == 'object' ) hour = false ;
612
+ if ( typeof ( minute ) == 'object' ) minute = false ;
613
+ if ( typeof ( second ) == 'object' ) second = false ;
614
+ if ( typeof ( timezone ) == 'object' ) timezone = false ;
615
+
611
616
if ( hour !== false ) hour = parseInt ( hour , 10 ) ;
612
617
if ( minute !== false ) minute = parseInt ( minute , 10 ) ;
613
618
if ( second !== false ) second = parseInt ( second , 10 ) ;
614
619
615
620
var ampm = ( hour < 12 ) ? 'AM' : 'PM' ;
616
-
621
+
617
622
// If the update was done in the input field, the input field should not be updated.
618
623
// If the update was done using the sliders, update the input field.
619
624
var hasChanged = ( hour != this . hour || minute != this . minute || second != this . second || ( this . ampm . length > 0 && this . ampm != ampm ) || timezone != this . timezone ) ;
@@ -793,6 +798,16 @@ $.datepicker._selectDate = function (id, dateStr) {
793
798
//#############################################################################################
794
799
$ . datepicker . _base_updateDatepicker = $ . datepicker . _updateDatepicker ;
795
800
$ . datepicker . _updateDatepicker = function ( inst ) {
801
+
802
+ // don't popup the datepicker if there is another instance already opened
803
+ var input = inst . input [ 0 ] ;
804
+ if ( $ . datepicker . _curInst &&
805
+ $ . datepicker . _curInst != inst &&
806
+ $ . datepicker . _datepickerShowing &&
807
+ $ . datepicker . _lastInput != input ) {
808
+ return ;
809
+ }
810
+
796
811
if ( typeof ( inst . stay_open ) !== 'boolean' || inst . stay_open === false ) {
797
812
798
813
this . _base_updateDatepicker ( inst ) ;
@@ -804,7 +819,7 @@ $.datepicker._updateDatepicker = function(inst) {
804
819
} ;
805
820
806
821
//#######################################################################################
807
- // third bad hack :/ override datepicker so it allows spaces and colan in the input field
822
+ // third bad hack :/ override datepicker so it allows spaces and colon in the input field
808
823
//#######################################################################################
809
824
$ . datepicker . _base_doKeyPress = $ . datepicker . _doKeyPress ;
810
825
$ . datepicker . _doKeyPress = function ( event ) {
@@ -814,6 +829,7 @@ $.datepicker._doKeyPress = function(event) {
814
829
if ( tp_inst ) {
815
830
if ( $ . datepicker . _get ( inst , 'constrainInput' ) ) {
816
831
var ampm = tp_inst . _defaults . ampm ,
832
+ dateChars = $ . datepicker . _possibleChars ( $ . datepicker . _get ( inst , 'dateFormat' ) ) ,
817
833
datetimeChars = tp_inst . _defaults . timeFormat . toString ( )
818
834
. replace ( / [ h m s ] / g, '' )
819
835
. replace ( / T T / g, ampm ? 'APM' : '' )
@@ -825,9 +841,10 @@ $.datepicker._doKeyPress = function(event) {
825
841
" " +
826
842
tp_inst . _defaults . separator +
827
843
tp_inst . _defaults . timeSuffix +
828
- $ . datepicker . _possibleChars ( $ . datepicker . _get ( inst , 'dateFormat' ) ) ,
844
+ ( tp_inst . _defaults . showTimezone ? tp_inst . _defaults . timezoneList . join ( '' ) : '' ) +
845
+ dateChars ,
829
846
chr = String . fromCharCode ( event . charCode === undefined ? event . keyCode : event . charCode ) ;
830
- return event . ctrlKey || ( chr < ' ' || ! datetimeChars || datetimeChars . indexOf ( chr ) > - 1 ) ;
847
+ return event . ctrlKey || ( chr < ' ' || ! dateChars || datetimeChars . indexOf ( chr ) > - 1 ) ;
831
848
}
832
849
}
833
850
@@ -908,12 +925,13 @@ $.datepicker._setTime = function(inst, date) {
908
925
second = defaults . secondMin ;
909
926
}
910
927
928
+ tp_inst . hour = hour ;
929
+ tp_inst . minute = minute ;
930
+ tp_inst . second = second ;
931
+
911
932
if ( tp_inst . hour_slider ) tp_inst . hour_slider . slider ( 'value' , hour ) ;
912
- else tp_inst . hour = hour ;
913
933
if ( tp_inst . minute_slider ) tp_inst . minute_slider . slider ( 'value' , minute ) ;
914
- else tp_inst . minute = minute ;
915
934
if ( tp_inst . second_slider ) tp_inst . second_slider . slider ( 'value' , second ) ;
916
- else tp_inst . second = second ;
917
935
918
936
tp_inst . _onTimeChange ( ) ;
919
937
tp_inst . _updateDateTime ( inst ) ;
0 commit comments