@@ -636,10 +636,10 @@ $.extend(Datepicker.prototype, {
636636 return ;
637637 var inst = $ . datepicker . _getInst ( input ) ;
638638 if ( $ . datepicker . _curInst && $ . datepicker . _curInst != inst ) {
639- if ( $ . datepicker . _datepickerShowing ) {
640- $ . datepicker . _triggerOnClose ( $ . datepicker . _curInst ) ;
641- }
642639 $ . datepicker . _curInst . dpDiv . stop ( true , true ) ;
640+ if ( inst && $ . datepicker . _datepickerShowing ) {
641+ $ . datepicker . _hideDatepicker ( $ . datepicker . _curInst . input [ 0 ] ) ;
642+ }
643643 }
644644 var beforeShow = $ . datepicker . _get ( inst , 'beforeShow' ) ;
645645 var beforeShowSettings = beforeShow ? beforeShow . apply ( input , [ input , inst ] ) : { } ;
@@ -790,14 +790,6 @@ $.extend(Datepicker.prototype, {
790790 return [ position . left , position . top ] ;
791791 } ,
792792
793- /* Trigger custom callback of onClose. */
794- _triggerOnClose : function ( inst ) {
795- var onClose = this . _get ( inst , 'onClose' ) ;
796- if ( onClose )
797- onClose . apply ( ( inst . input ? inst . input [ 0 ] : null ) ,
798- [ ( inst . input ? inst . input . val ( ) : '' ) , inst ] ) ;
799- } ,
800-
801793 /* Hide the date picker from view.
802794 @param input element - the input field attached to the date picker */
803795 _hideDatepicker : function ( input ) {
@@ -820,8 +812,11 @@ $.extend(Datepicker.prototype, {
820812 ( showAnim == 'fadeIn' ? 'fadeOut' : 'hide' ) ) ] ( ( showAnim ? duration : null ) , postProcess ) ;
821813 if ( ! showAnim )
822814 postProcess ( ) ;
823- $ . datepicker . _triggerOnClose ( inst ) ;
824815 this . _datepickerShowing = false ;
816+ var onClose = this . _get ( inst , 'onClose' ) ;
817+ if ( onClose )
818+ onClose . apply ( ( inst . input ? inst . input [ 0 ] : null ) ,
819+ [ ( inst . input ? inst . input . val ( ) : '' ) , inst ] ) ;
825820 this . _lastInput = null ;
826821 if ( this . _inDialog ) {
827822 this . _dialogInput . css ( { position : 'absolute' , left : '0' , top : '-100px' } ) ;
@@ -843,12 +838,16 @@ $.extend(Datepicker.prototype, {
843838 _checkExternalClick : function ( event ) {
844839 if ( ! $ . datepicker . _curInst )
845840 return ;
846- var $target = $ ( event . target ) ;
847- if ( $target [ 0 ] . id != $ . datepicker . _mainDivId &&
841+
842+ var $target = $ ( event . target ) ,
843+ inst = $ . datepicker . _getInst ( $target [ 0 ] ) ;
844+
845+ if ( ( ( $target [ 0 ] . id != $ . datepicker . _mainDivId &&
848846 $target . parents ( '#' + $ . datepicker . _mainDivId ) . length == 0 &&
849847 ! $target . hasClass ( $ . datepicker . markerClassName ) &&
850848 ! $target . hasClass ( $ . datepicker . _triggerClass ) &&
851- $ . datepicker . _datepickerShowing && ! ( $ . datepicker . _inDialog && $ . blockUI ) )
849+ $ . datepicker . _datepickerShowing && ! ( $ . datepicker . _inDialog && $ . blockUI ) ) ) ||
850+ ( $target . hasClass ( $ . datepicker . markerClassName ) && $ . datepicker . _curInst != inst ) )
852851 $ . datepicker . _hideDatepicker ( ) ;
853852 } ,
854853
0 commit comments