2016-11-23 116 views
0

我在yii2 gridView中添加了一个范围过滤器,当你点击过滤器输入时,显示一个弹出窗口,如图所示。yii2网格过滤器 - 忽略过滤器输入变化

enter image description here

为酥料饼的DIV是td过滤器单元(position:absolute)的内部。

当我改变'我'更改'从'或'到'值,它会触发网格重新加载和从yii.gridView.js筛选。当我更改这些输入值时,如何避免网格过滤? IE浏览器。停止运行yii.gridView.js中的'applyFilter'函数?

侦听器似乎位于筛选器行内的输入上。

回答

0

我最终不得不绑定一个新的点击并将'输入'监听器绑定到'from'和'to'过滤器输入,然后使用bindFirstyii.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()); 
    } 
};