我有一些带有一些数据的JQgrid,我启用了工具栏搜索选项。我想知道是否有一种方法可以告诉工具栏在输入最后一个字符后触发2或3秒,或者当用户按下回车时触发。搜索文档wiki没有产生任何结果。任何想法?
答案 0 :(得分:3)
如果您检查将在使用searchOnEnter: false
选项时使用的jqGrid代码(请参阅here),您将看不到管理超时的选项,之后将自动开始搜索。超时始终为500毫秒(半秒)。因此,如果您需要另一个超时,则必须在自定义代码中实现相同的行为。您可以注册自己的keydown
处理程序,该处理程序与searchOnEnter: false
选项执行相同的操作,但具有另一个超时。例如
var $grid = $("#grid"), hTimeout;
$grid.jqGrid('filterToolbar', {defaultSearch: "cn", stringResult: true});
$grid.closest(".ui-jqgrid-view")
.find(">.ui-jqgrid-hdiv .ui-search-toolbar th input")
.keydown(function (e) {
var uiKeyCode = $.ui.keyCode,
keyCode = e.keyCode || e.which;
if (keyCode === uiKeyCode.ENTER) {
return false;
}
if (keyCode === uiKeyCode.PAGE_UP || keyCode === uiKeyCode.PAGE_DOWN ||
keyCode === uiKeyCode.END || keyCode === uiKeyCode.HOME ||
keyCode === uiKeyCode.UP || keyCode === uiKeyCode.DOWN ||
keyCode === uiKeyCode.LEFT || keyCode === uiKeyCode.RIGHT) {
return;
}
if (hTimeout) {
clearTimeout(hTimeout);
}
hTimeout = setTimeout(function () {
$grid[0].triggerToolbar();
hTimeout = undefined;
}, 3000); // start searching with 3 sec timeout
});
请参阅the demo。
答案 1 :(得分:0)
在colModel中,您可以将搜索选项设置为自定义函数 例如:
searchoptions: {dataInit: function (elem) { AutoOrAfterEnterSearch(elem) }} ...
然后,您可以构建事件处理程序,以便在一段时间后或按下回车键Ex if (e.keyCode == 13) { SearchFunction() };
时触发搜索,每次按键都需要重置计时器。这不是解决方案的完整代码,但这应该是正确的路径。我个人使用它来为搜索工具栏构建一个自动完成(这可能比我脑海中的定时搜索更好)