我使用jqGrid的筛选器工具栏,其选项searchOnEnter:false。我在字段中输入一些文本后立即发送请求。在我的应用程序中,最好等待用户输入他想要的文本,然后在停止输入时进行搜索。那么,在jqGrid中是否可以在请求发送到服务器之前添加延迟?jqGrid搜索延迟
4
A
回答
3
这是正确的问题,但jqGrid无法在应用自动搜索之前指定超时。它总是500毫秒。
如果您检查filterToolbar
的源代码,您会发现使用searchOnEnter
选项的the following lines。
$("input",thd).keydown(function(e){
var key = e.which;
switch (key) {
case 13:
return false;
case 9 :
case 16:
case 37:
case 38:
case 39:
case 40:
case 27:
break;
default :
if(timeoutHnd) { clearTimeout(timeoutHnd); }
timeoutHnd = setTimeout(function(){triggerToolbar();},500);
}
});
所以你几乎可以连同默认searchOnEnter: false
选项使用相同的代码,哪些是你需要超时后手动执行的triggerToolbar
呼叫。例如,该码开始的下面fragmant搜索工具栏上的打字后3秒(3000毫秒)的超时之后搜索:
var timeoutHnd, k = $.ui.keyCode,
toSkip = [k.TAB, k.SHIFT, k.ALT, k.ESCAPE, k.LEFT, k.UP, k.RIGHT, k.DOWN, k.HOME, k.END, k.INSERT];
$grid.jqGrid("filterToolbar", {defaultSearch: "cn"});
$grid.closest(".ui-jqgrid-view")
.find(".ui-jqgrid-hdiv .ui-search-toolbar input[type=text]")
.keydown(function (e) {
var key = e.which;
if (key === k.ENTER) {
return false;
}
if ($.inArray(key, toSkip) < 0) {
if (timeoutHnd) {
clearTimeout(timeoutHnd);
timeoutHnd = 0;
}
timeoutHnd = setTimeout(function() {
$grid[0].triggerToolbar();
timeoutHnd = 0;
}, 3000);
}
});
Here是相应的演示:
修订:Free jqGrid jqGrid的分支支持autosearchDelay
选项(默认值为500)filterToolbar
可以与autosearch: true
(默认值)和searchOnEnter: false
。因此上述技巧不是必需的。可以使用
$grid.jqGrid("filterToolbar", {
searchOnEnter: false,
autosearchDelay: 3000 // 3 sec
});
相关问题
- 1. JQuery的延迟KEYUP搜索
- 2. Elasticsearch延迟存储和立即搜索
- 3. dotcmis/alfresco/delete => create =>搜索延迟
- 4. 使用Angular进行延迟搜索
- 5. Screwturn维基百科搜索延迟
- 6. 在Rails中延迟搜索的作业
- 7. jqgrid搜索mvc3
- 8. jqGrid的表搜索
- 9. JqGrid搜索面板
- 10. Jqgrid复杂搜索
- 11. jqgrid多重搜索
- 12. jqgrid内嵌搜索
- 13. jqGrid的搜索框
- 14. jqGrid,搜索日期
- 15. 搜索中的jqGrid
- 16. JQgrid高级搜索
- 17. Jqgrid高级搜索
- 18. Elasticsearch搜索延迟从<strong>5秒</strong>索引
- 19. JQGrid&搜索引擎索引
- 20. jqGrid的高级搜索 - 保存搜索
- 21. jqgrid搜索:如何指定搜索列?
- 22. Google AppEngine索引延迟
- 23. 创建逻辑outlook搜索文件夹是否减少搜索延迟?
- 24. Arduino到Unity3D延迟/延迟
- 25. 延迟jquery循环延迟
- 26. netem延迟不延迟
- 27. 延迟加载延迟
- 28. 搜索选项:jqGrid的+ PHP
- 29. jqGrid搜索抛出异常
- 30. JQGrid,搜索相关问题
当从服务器获取数据时,这不起作用。我试过你的代码,如果使用服务器端数据,它不起作用。尽管如此,如果数据是本地的(就像在你的例子中一样),这个工作很好。有什么想法如何改变数据远程获取时的延迟? – user2435860
@ user2435860:首先:什么“不起作用”。秒:你做了什么,你使用的jqGrid的版本和分支? [免费jqGrid](https://github.com/free-jqgrid/jqGrid)是我开发的分支。它有'filterToolbar'的'autosearchDelay'选项,可以和'autosearch:true'组合使用。因此,您可以使用'{autosearch:true,autosearchDelay:3000}'作为'filterToolbar'的选项。它适用于任何'datatype'。 – Oleg
你好,我正在使用jqgrid版本4.6。我正在加载数据并使用服务器端处理来处理它,并添加了一个过滤器选项。问题是我不能像你那样改变setTimeout的延迟。它不适用于来自服务器的数据。我的问题是我处理大量的数据,500ms是不够的,因为之后的jqgrid被锁定,直到获取新的过滤数据,这将锁定我的web应用程序。我试图找到一种方法来停止triggerToolbar(),但直到现在还没有成功。你有推荐给我吗? – user2435860