【问题标题】:yii2 Grid Filter - Ignore Filter Input Changeyii2 Grid Filter - 忽略过滤器输入变化
【发布时间】:2016-11-23 01:08:44
【问题描述】:
我在 yii2 gridView 中添加了一个范围过滤器,当您单击过滤器输入时,会显示一个类似于所示的弹出框。
弹出框的 div 位于 td 过滤器单元格 (position:absolute) 内。
当我更改“从”或“到”值时,它会触发网格重新加载并从yii.gridView.js 过滤。更改这些输入值时如何避免网格过滤? IE。停止运行 yii.gridView.js 的“applyFilter”功能?
侦听器似乎位于过滤器行内的输入上。
【问题讨论】:
标签:
jquery
gridview
filter
yii2
【解决方案1】:
我最终不得不将新的单击和“输入按下”侦听器绑定到“来自”和“到”过滤器输入,然后使用 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());
}
};