2016-11-23 4 views
0

Я добавляю фильтр диапазона в yii2 gridView, который, когда вы нажимаете на вход фильтра, показывает popover, как показано на рисунке.yii2 Grid Filter - Ignore Filter Input Change

enter image description here

DIV для пирог находится внутри td фильтра клетки (position:absolute).

Когда я меняю значение I, меняю значение «от» или «на», оно запускает сетку для перезагрузки и фильтрации с yii.gridView.js. Как я могу избежать фильтрации сетки при изменении этих входных значений? То есть. остановить функцию applyFilter из yii.gridView.js?

Слушатель, как представляется, находится на входах, расположенных в строке фильтра.

ответ

0

В конце концов мне пришлось привязать новый клик и ввести «прослушиватель» на вход «от» и «до» фильтра, а затем использовать bindFirst для привязки его до yii.gridView.js и вернуть значение false, чтобы остановить его распространение. Например:

/** 
* Need to bind first to stop yii.gridView.js triggering filter change 
*/ 
$filterInputs.bindFirst('change.yiiGridView keydown.yiiGridView', function() { 
    if (event.type === 'keydown') { 
     // enter button 
     if (event.keyCode == 13) { 
      $btn.trigger('click'); 
      return false; 
     } 
    } else return false; 
}); 

/** 
* Bind to the front of the event listener queue 
*/ 
$.fn.bindFirst = function(name, fn) { 
    var elem, handlers, i, _len; 
    this.bind(name, fn); 
    for (i = 0, _len = this.length; i < _len; i++) { 
    elem = this[i]; 
    handlers = jQuery._data(elem).events[name.split('.')[0]]; 
    handlers.unshift(handlers.pop()); 
    } 
};