【问题标题】:jq Grid Search on Enter if Search Box is always visible on page如果搜索框始终在页面上可见,则 jqGrid 在 Enter 上搜索
【发布时间】:2011-09-03 11:15:12
【问题描述】:
【问题讨论】:
标签:
javascript
search
jqgrid
【解决方案1】:
你这是可能的。我想你仍然使用 jqGrid 3.8.2。所以我会在我的回答中使用这个版本。
您可以在the answer 中找到解决方案的主要思想。为了更加小心,beforeShowSearch 的代码应该稍微扩展一下:
beforeShowSearch: function($form) {
// because beforeShowSearch will be called on all open Search Dialog,
// but the old dialog can be only hidden and not destroyed
// we test whether we already bound the 'keydown' event
var events = $('.vdata',$form).data('events'), event;
for (event in events) {
if (events.hasOwnProperty(event) && event === 'keydown') {
return;
}
}
$('.vdata',$form).keydown( function( e ) {
var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
if (e.which == 13) { // save
//$(".ui-search", $form).click();
grid[0].SearchFilter.search();
}
});
}
这种方式适用于高级搜索对话框(请参阅the demo)和始终位于网格上方的对话框(请参阅another demo)。
更新:从 jQuery 1.8 开始,应该使用 $._data($('.vdata',$form)[0], 'events'); 而不是 $('.vdata',$form).data('events') 来获取网格中所有事件的列表。