我使用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