的函数简而言之就是这个设置。 我有一张大桌子。每当单元格获得焦点时,服务器的异步调用完成(使用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