@@ -893,35 +893,48 @@ $.extend(DataTable.prototype, UIControl.prototype, {
893
893
searchForPattern ( ) ;
894
894
}
895
895
}
896
- function showSearch ( event ) {
897
- event . preventDefault ( ) ;
898
- event . stopPropagation ( ) ;
899
896
900
- var triggerField ;
901
- if ( typeof self . param . filter_trigger_id != "undefined"
902
- && self . param . filter_trigger_id . length > 0 ) {
903
- triggerField = document . getElementById ( self . param . filter_trigger_id ) ;
904
- } else if ( event && event . target ) {
897
+ function getTriggerField ( event ) {
898
+ if ( typeof self . param . filter_trigger_id !== "undefined" &&
899
+ self . param . filter_trigger_id . length > 0 ) {
900
+ return document . getElementById ( self . param . filter_trigger_id ) ;
901
+ } else {
902
+ if ( event && event . target ) {
905
903
if ( event . target . nodeName . toLowerCase ( ) === 'span' ) {
906
- triggerField = $ ( event . target ) . siblings ( 'input' ) ;
904
+ return $ ( event . target ) . siblings ( 'input' ) ;
907
905
} else {
908
- triggerField = $ ( event . target ) . children ( 'input' ) ;
906
+ return $ ( event . target ) . children ( 'input' ) ;
909
907
}
910
908
}
909
+ }
910
+ }
911
911
912
- var $searchAction = $ ( this ) ;
913
- $searchAction . addClass ( 'searchActive forceActionVisible' ) ;
914
- var width = getOptimalWidthForSearchField ( $searchAction ) ;
915
- $searchAction . css ( 'width' , width + 'px' ) ;
912
+ function restoreSearchFieldFocus ( event )
913
+ {
914
+ var triggerField = getTriggerField ( event ) ;
916
915
917
916
if ( triggerField ) {
918
917
triggerField . focus ( ) ;
919
918
}
919
+ }
920
920
921
+ function showSearchInputFields ( $searchAction ) {
922
+ $searchAction . addClass ( 'searchActive forceActionVisible' ) ;
923
+ var width = getOptimalWidthForSearchField ( $searchAction ) ;
924
+ $searchAction . css ( 'width' , width + 'px' ) ;
921
925
$searchAction . find ( '.icon-search' ) . on ( 'click' , searchForPattern ) ;
922
926
$searchAction . off ( 'click' , showSearch ) ;
923
927
}
924
928
929
+ function showSearch ( event ) {
930
+ event . preventDefault ( ) ;
931
+ event . stopPropagation ( ) ;
932
+
933
+ showSearchInputFields ( $ ( this ) ) ;
934
+ restoreSearchFieldFocus ( event ) ;
935
+ }
936
+
937
+
925
938
function searchForPattern ( event ) {
926
939
var keyword = '' ;
927
940
if ( event ) {
@@ -974,11 +987,16 @@ $.extend(DataTable.prototype, UIControl.prototype, {
974
987
}
975
988
} ) ;
976
989
990
+ $searchInput . on ( "blur" , function ( ) {
991
+ delete self . param . filter_trigger_id ;
992
+ } ) ;
993
+
977
994
var $dataTable = $searchInput . parents ( '.dataTable' ) . first ( ) ;
978
995
if ( currentPattern ) {
979
996
$dataTable . addClass ( 'hasSearchKeyword' ) ;
980
997
$searchInput . val ( currentPattern ) ;
981
- $searchAction . click ( ) ;
998
+ showSearchInputFields ( $searchAction ) ;
999
+ restoreSearchFieldFocus ( ) ;
982
1000
} else {
983
1001
$dataTable . removeClass ( 'hasSearchKeyword' ) ;
984
1002
}
0 commit comments