我知道我可以检测单个退格按键这样的:检测的双退格事件jQuery中
$("#myelement").bind ("keyup", function(event) {
if (event.keyCode==8) {
alert ("Backspaced!!!");
}
});
我怎么会发现这种情况发生在1秒钟内说,就像双击双退格?
我知道我可以检测单个退格按键这样的:检测的双退格事件jQuery中
$("#myelement").bind ("keyup", function(event) {
if (event.keyCode==8) {
alert ("Backspaced!!!");
}
});
我怎么会发现这种情况发生在1秒钟内说,就像双击双退格?
在jQuery.com本身,其custom.js文件中,是一些代码,可能对你有所帮助。它在用户击键中侦听“konami”代码。如果它检测到一个特定的按键序列,如下面的变量konami
所示,它会作出响应。
// Hehe.
if (window.addEventListener) {
var kkeys = [], konami = "38,38,40,40,37,39,37,39,66,65";
window.addEventListener("keydown", function(e) {
kkeys.push(e.keyCode);
if (kkeys.toString().indexOf(konami) >= 0)
window.location = "http://ejohn.org/apps/hero/";
}, true);
}
这段代码没有做的是跟踪最后一次按键和当前按键之间的时间。但请注意,通过一些细微的修改,我们可以模拟他们的代码并生成您想要的所需输出。
<script>
(function($){
// Prep our variables
var keys = [], lastEntry = 0, seq = '8,8';
// Listen for keydown events
$(document).keydown(function(e){
// Push new key into keys array
keys.push(e.which);
// See if we need to respond
if (keys.toString().indexOf(seq) != -1)
if (e.timeStamp - lastEntry <= 1000)
console.log('Correct keys, in the current time.');
// Update time of last keydown
lastEntry = e.timeStamp;
});
})(jQuery);
</script>
您的方法不检查它在两次按键之间传递的时间。 – 2012-04-13 14:18:33
@JanHančič查看最后一段:代码示例即将到来。 – Sampson 2012-04-13 14:20:30
我已经删除了投票(当我投票赞成时,那个部分不在那里):) – 2012-04-13 14:21:26
您将不得不跟踪上次按下退格键的时间。然后每次你的事件处理程序被调用时,检查该值,看看它是否小于1秒,如果它是你的双重退格按下。如果不是,则将最后退格时间的值重置为当前时间,并且不执行任何代码。
在伪代码:
last_timestamp = 0
onkeyup() {
if key == backspace {
if now() - last_timestamp <= 1 {
// execute code
last_timestamp = 0
}
else {
last_timestamp = now()
}
}
}
var flag=false;
$("#myelement").on("keyup", function(e) {
if ((e.keyCode ? e.keyCode : e.which) == 8) {
setTimeout(function() {flag=false}, 1000);
if (flag) {
flag=false;
alert('backspace twice');
}
flag=true;
}else{
flag=false;
}
});
跟踪前一个关键代码,并设置一个计时器,后一秒将其清除。 – 2012-04-13 14:14:02