我有一个包含一些数据的 JQgrid,并且启用了工具栏搜索选项。我想知道是否有办法告诉工具栏在输入最后一个字符后 2 或 3 秒触发,或者在用户按下回车键时触发。搜索文档 wiki 没有结果。任何的想法?
问问题
662 次
2 回答
3
如果您检查将在使用searchOnEnter: false
选项的情况下使用的 jqGrid 代码(请参见此处),您将看不到管理超时的选项,之后将自动开始搜索。超时始终为 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
});
请参阅演示。
于 2013-02-26T15:25:21.887 回答
0
在 colModel 中,您可以将 searchoptions 设置为自定义函数,例如:
searchoptions: {dataInit: function (elem) { AutoOrAfterEnterSearch(elem) }} ...
然后,您可以构建事件处理程序以在一段时间后或按下 Enter 键时触发搜索 Ex if (e.keyCode == 13) { SearchFunction() };
,每次按键您都需要重置计时器。这不是解决方案的完整代码,但这应该是正确的路径。我个人使用它来为搜索工具栏构建一个自动完成功能(这可能比我认为的定时搜索更好)
于 2013-02-26T14:07:20.137 回答