的函數簡而言之就是這個設置。 我有一張大桌子。每當單元格獲得焦點時,服務器的異步調用完成(使用PageMethods),並返回一些數據並更新頁面中的信息框。 我已經編寫了代碼,可以使用箭頭鍵在單元格之間導航。 當我通過幾個單元格快速移動焦點以便到達我想要的單元格時,會發生此問題。每個獲得焦點都會被執行,並且由於與服務器的通信需要大約半秒鐘的時間,所以它會變得非常令人不快,並且不太方便用戶。 理想情況下,我只想執行最後一次焦點事件。但是如何?我不知道哪一個事件是最後一個,我可以嗎? 想法,任何人?只執行最後一個叫做
2
A
回答
1
原則上你需要一個短時間的計時器,當焦點事件發生時開始倒計時。如果在計時器到期之前發生另一個事件,那麼你重新啓動它,如果沒有,那麼你對最後一個單元格執行OnFocus邏輯。
訣竅是使其足夠短,以保持UI的感覺響應,但足夠長的時間以避免觸發多次調用服務器。
不幸的是,我不知道你是怎麼做到這一點的ASP.NET,但我已經在類似情況下在Winforms中完成了它。
2
保羅是正確的。調用方法是將前
var timer; // timer variable in scope for other functions
var onFocus = function() {
clearTimeout(timer);
timer = setTimeout("makePageMethodCall()", 500);
}
var makePageMethodCall = function() {
// make ajax call to your PageMethod function
}
到的setTimeout()的調用創建一個半秒鐘的等待時間:
爲此在網絡上您會在目前的焦點事件與javascript timing functions setTimeout和clearTimeout結合打電話給你的服務器。如果在該定時器到期之前發生另一個焦點事件,clearTimeout()調用將在另一個啓動之前取消當前定時器。正如Paolo所建議的那樣,您可以嘗試500毫秒的時間長度來找到最適合您情況的值。
相關問題
- 1. Magento只執行最後一個事件
- 2. 只執行最後一個Ajax請求
- 3. 只執行一次ajax呼叫一次
- 4. 多個隊列只有最後一個正在執行
- 5. Python多線程:產生多個線程,只執行最後一個執行
- 6. 讓最後一個例外從最後一個powershell執行
- 7. 只執行隊列的最後一個塊
- 8. Javascript只執行最後一個函數,稱爲
- 9. python只讀最後一行
- 10. 在最後一行只有
- 11. 我只希望我的表格有一行。是否更好做一個JOIN或只做兩個選擇呼叫
- 12. 最後一塊的執行
- 13. 只有方法執行的最後一行(Objective-C)
- 14. 只運行一個雙絞線呼叫
- 15. Junit報告只顯示用build.xml執行時運行的最後一個類
- 16. 角度翻譯 - 當多個加載器只執行最後一個時
- 17. PHP多個MYSQL查詢執行,但只有最後一個工作
- 18. 只有最後一條插入語句被執行
- 19. 只在if語句中執行的最後一條語句
- 20. Gulp只執行gulpfile中的最後一項任務?
- 21. 暫停當前ajax呼叫,執行一個新的,執行後,繼續默認的ajax呼叫
- 22. 預包裝Redbean只提取一個(最後一個)行
- 23. 後臺抓取只執行一次ios7
- 24. 第一個動畫執行後執行
- 25. 變化的foreach做只有一個呼叫
- 26. PHP執行 - 如何只顯示最後一個命令的結果
- 27. 最後一個唯一行
- 28. 執行最後一個動作時後退按鈕按下ASP.Net
- 29. apache poi只寫最後一行
- 30. MySQL WHERE IN只返回最後一行
@Magnus - 我已經重申了你的問題,讓更多的人有機會找到它。 – Paolo 2010-02-22 16:28:45
by cells你的意思是你有文本框? – 2010-02-22 17:10:41