Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中清空键盘缓冲区_Javascript_Jquery - Fatal编程技术网

在javascript中清空键盘缓冲区

在javascript中清空键盘缓冲区,javascript,jquery,Javascript,Jquery,如果我有一个元素 $('#div').keydown(function(event) { .... 若用户在很短的时间内像疯兔子一样按了上千次键,浏览器就会对大多数呼叫做出响应 我是否可以通过刷新键盘缓冲区来防止这种情况发生?您可以查看演示如何抑制函数调用并使疯狂的兔子平静下来的 function debounce(fn, delay) { var timer = null; return function () { var context = this, args = arg

如果我有一个元素

$('#div').keydown(function(event) { ....
若用户在很短的时间内像疯兔子一样按了上千次键,浏览器就会对大多数呼叫做出响应

我是否可以通过刷新键盘缓冲区来防止这种情况发生?

您可以查看演示如何抑制函数调用并使疯狂的兔子平静下来的

function debounce(fn, delay) {
  var timer = null;
  return function () {
    var context = this, args = arguments;
    clearTimeout(timer);
    timer = setTimeout(function () {
      fn.apply(context, args);
    }, delay);
  };
}

$('input.username').keypress(debounce(function (event) {
  // do the Ajax request
}, 250));
您可以查看演示如何抑制函数调用并使疯狂的兔子平静下来的

function debounce(fn, delay) {
  var timer = null;
  return function () {
    var context = this, args = arguments;
    clearTimeout(timer);
    timer = setTimeout(function () {
      fn.apply(context, args);
    }, delay);
  };
}

$('input.username').keypress(debounce(function (event) {
  // do the Ajax request
}, 250));

这是一种处理过多keydown调用的简单方法

var timeout = false; //I'd recommend defining this variable within a local scope

$('#div').keydown(function(event) {
    if(timeout) return;
    timeout = true;
    setTimeout(function(){timeout=false}, 100);
    //Change 100 to something more appropriate

    //Rest of function
}

这是一种处理过多keydown调用的简单方法

var timeout = false; //I'd recommend defining this variable within a local scope

$('#div').keydown(function(event) {
    if(timeout) return;
    timeout = true;
    setTimeout(function(){timeout=false}, 100);
    //Change 100 to something more appropriate

    //Rest of function
}


你到底想阻止什么?快速打字?您可以简单地选择忽略上一个键N毫秒内的击键。只需确保您不会阻止实际键入快的人。:)你到底想阻止什么?快速打字?您可以简单地选择忽略上一个键N毫秒内的击键。只需确保您不会阻止实际键入快的人。:)@阿格扎姆,只是我已经经历了这一切。你还记得吗?我甚至不记得早餐吃了什么谢谢你,伙计…@Agzam,我也是,我什么都不记得了。我只知道我现在正在喝啤酒,如果我需要找点什么东西,我就用谷歌搜索一下。@Agzam,我只是在我的经历中经历了这一切。你还记得吗?我甚至不记得早餐吃了什么谢谢你,伙计…@Agzam,我也是,我什么都不记得了。我只知道我现在正在喝啤酒,如果我需要找点什么,我就用谷歌搜索一下。我不知道你在这段代码中想做什么,但是变量
timeout
一旦按下第一个键,就永远不会得到错误的值。我认为设置超时之前的
timeout=true
语句是多余的;您立即覆盖它。@pimvdb您读过问题了吗?只有当用户具有难以置信的快速打字能力时,此添加才会显示生命迹象。@Rob W:是的,也许我误解了,但同时
timeout
将具有超时的ID,而不是
true
值。您能告诉我将超时ID存储到
timeout
变量中的原因吗?我的错,我的脑子被延迟方法占据了(如图所示)。我不知道您在这段代码中想做什么,但是变量
timeout
一旦按下第一个键,就不会得到错误的值。我认为设置超时之前的
timeout=true
语句是多余的;您立即覆盖它。@pimvdb您读过问题了吗?只有当用户具有难以置信的快速打字能力时,此添加才会显示生命迹象。@Rob W:是的,也许我误解了,但同时
timeout
将具有超时的ID,而不是
true
值。您能告诉我将超时的ID存储到
timeout
变量中的原因吗?我的错,我的脑子被延迟方法占据了(如图所示)。