的函數簡而言之就是這個設置。 我有一張大桌子。每當單元格獲得焦點時,服務器的異步調用完成(使用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. 只執行最後一個Ajax請求
- 2. 多個隊列只有最後一個正在執行
- 3. Python多線程:產生多個線程,只執行最後一個執行
- 4. 讓最後一個例外從最後一個powershell執行
- 5. 在最後一行只有
- 6. 我只希望我的表格有一行。是否更好做一個JOIN或只做兩個選擇呼叫
- 7. Junit報告只顯示用build.xml執行時運行的最後一個類
- 8. PHP多個MYSQL查詢執行,但只有最後一個工作
- 9. 只有最後一條插入語句被執行
- 10. Dispatcher.beginInvoke只通過循環執行最後一次?
- 11. 預包裝Redbean只提取一個(最後一個)行
- 12. 第一個動畫執行後執行
- 13. 變化的foreach做只有一個呼叫
- 14. PHP執行 - 如何只顯示最後一個命令的結果
- 15. 最後一個唯一行
- 16. android LogCat只輸出最後一行
- 17. apache poi只寫最後一行
- 18. MySQL WHERE IN只返回最後一行
- 19. Angular.forEach隻影響最後一行
- 20. 只打印文件的最後一行?
- 21. TableLayoutPanel只顯示最後一行 - C#
- 22. RxJava一次只能執行一個Observable
- 23. 分享上一個網頁的最後一個鳴叫
- 24. 最後一條語句沒有執行
- 25. 更新只發生在最後一行,而不是第一個
- 26. 寫入一個文件,但只保存最後一行
- 27. GET for一個For循環只執行一次執行
- 28. 如何使jquery事件只執行最近觸發的一個
- 29. Loop只返回最後一個項目
- 30. Scrapy只產生最後一個元素
@Magnus - 我已經重申了你的問題,讓更多的人有機會找到它。 – Paolo 2010-02-22 16:28:45
by cells你的意思是你有文本框? – 2010-02-22 17:10:41