Alex Trofimov 9 лет назад
Родитель
Сommit
0595dcb1b7

+ 10 - 2
inc/js/classes/BxDolGrid.js

@@ -7,6 +7,7 @@
  */
 
 function BxDolGrid (sObject, oOptions) {
+    this._iSearchTimeoutId = false;
     this._sObject = sObject;
     this._sIdWrapper = 'bx-grid-wrap-' + sObject;
     this._sIdContainer = 'bx-grid-cont-' + sObject;
@@ -381,14 +382,21 @@ BxDolGrid.prototype._bindActions = function (isSkipSearchInput) {
             $this.action (sAction, oData, '', false, sActionConfirm);
         });    
 
+        var callbackSearch = function (sTerm) {
+            clearTimeout($this._iSearchTimeoutId);
+            $this._iSearchTimeoutId = setTimeout(function () {
+                glGrids[$this._sObject].setFilter(sTerm, true);
+            }, 500);
+        }
+        
         jQuery('#bx-grid-search-' + this._sObject).bind({
             keyup: function (e) {
-                glGrids[$this._sObject].setFilter(this.value, true);
+                callbackSearch(this.value);
             },
             focusout: function (e) {
                 if (0 == this.value.length)
                     this.value = $this._sSearchInputText;
-                glGrids[$this._sObject].setFilter(this.value == $this._sSearchInputText ? '' : this.value, true);
+                callbackSearch(this.value == $this._sSearchInputText ? '' : this.value);
             },
             focusin: function (e) {
                 if (this.value == $this._sSearchInputText)

+ 2 - 1
modules/base/general/classes/BxBaseModGeneralGridAdministration.php

@@ -128,7 +128,8 @@ class BxBaseModGeneralGridAdministration extends BxTemplGrid
             'name' => 'search',
             'attrs' => array(
                 'id' => 'bx-grid-search-' . $this->_sObject,
-                'onKeyup' => 'javascript:$(this).off(\'keyup\'); ' . $sJsObject . '.onChangeFilter(this)'
+                'onKeyup' => 'javascript:$(this).off(\'keyup focusout\'); ' . $sJsObject . '.onChangeFilter(this)',
+                'onBlur' => 'javascript:' . $sJsObject . '.onChangeFilter(this)',
             )
         );
 

+ 7 - 2
modules/boonex/accounts/js/manage_tools.js

@@ -9,7 +9,8 @@
  */
 
 function BxAccntManageTools(oOptions) {
-	this._sActionsUrl = oOptions.sActionUrl;
+    this._iSearchTimeoutId = false;
+	this._sActionsUrl = oOptions.sActionUrl;    
 	this._sObjNameGrid = oOptions.sObjNameGrid;
     this._sObjName = oOptions.sObjName == undefined ? 'oBxAccntManageTools' : oOptions.sObjName;
 
@@ -22,6 +23,7 @@ function BxAccntManageTools(oOptions) {
 }
 
 BxAccntManageTools.prototype.onChangeFilter = function(oFilter) {
+    var $this = this;
 	var oFilter1 = $('#bx-grid-filter1-' + this._sObjNameGrid);
 	var sValueFilter1 = oFilter1.length > 0 ? oFilter1.val() : '';
 
@@ -30,7 +32,10 @@ BxAccntManageTools.prototype.onChangeFilter = function(oFilter) {
 	if(sValueSearch == _t('_sys_grid_search'))
 		sValueSearch = '';
 
-	glGrids[this._sObjNameGrid].setFilter(sValueFilter1 + this._sParamsDivider + sValueSearch, true);
+    clearTimeout($this._iSearchTimeoutId);
+    $this._iSearchTimeoutId = setTimeout(function () {
+        glGrids[$this._sObjNameGrid].setFilter(sValueFilter1 + $this._sParamsDivider + sValueSearch, true);
+    }, 500);
 };
 
 BxAccntManageTools.prototype.onClickSettings = function(sMenuObject, oButton) {