如何延迟onkeydown事件
我想实现一个功能,当按下键盘上的下箭头时,能够将一个ul列表循环选中,以下是代码
现在的问题是当我连续按着向下按键不放的时候,选项滚动得太快了,有什么方法可以延迟,比如间隔0.5秒再滚动到下一项。请问各位高手,应该如何修改上面的代码实现onkeydown的延迟?谢谢各位!
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8">
<style type="text/css">
.current{background-color:#aecdee}
</style>
</head>
<body>
<input id="input" type="text">
<ul id="ul">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
</ul>
<script type="text/javascript">
function $(id) {
return typeof id==="string" ? document.getElementById(id) : id;
}
(function() {
var input = $("input");
var list = $("ul").getElementsByTagName("li");
var index = -1;
function sIndex() {
index = index>=9 ? -1 : index+1;
return index;
}
document.onkeydown = function(e) {
e = e || window.event;
if(e.keyCode == 40) {
sIndex();
for(var i = 0,len=list.length; i<len; i++) {
list[i].className = i==index ? "current" : "";
}
}
};
})();
</script>
</body>
</html>
现在的问题是当我连续按着向下按键不放的时候,选项滚动得太快了,有什么方法可以延迟,比如间隔0.5秒再滚动到下一项。请问各位高手,应该如何修改上面的代码实现onkeydown的延迟?谢谢各位!
...全文
相关推荐
延迟了TextChanged事件的TextBox文本框控件C#源代码
**防止事件堆叠**:为了避免多个延迟事件在用户连续输入后一起触发,需要确保每个新的输入都会取消上一次的延迟事件,只保留最后一次的事件处理。
JS键盘事件详解[代码]
onkeyup不会像onkeydown那样有延迟的问题,因此它可以用来检测用户的连击动作或是在按键松开时执行某些操作。
js实现按Ctrl+Enter发送效果
这个函数使用了setTimeout来延迟执行页面的刷新操作。这是因为在某些浏览器中,页面在提交表单后立即重新加载可能会导致无法捕获到onunload事件,从而无法执行相关的清理工作或提示信息。
back按键的监听事件
**onKeyDown() 方法**: - `onKeyDown()` 是Activity类中的一个回调方法,用于监听所有物理按键的按下事件,包括Back键。
Android中实现再按一次返回键退出应用程序
在ExitActivity中,我们需要重写onKeyDown()方法来捕获硬件返回键的按下事件。在该方法中,我们可以记录下第一次点击的时间,并设置一个短暂的延迟,比如2秒。


