문제

So my problem is multipressing key with function keydown and i need to apply time limit, when u hit key wait 5 sec and then you can again hit the key. How can i do this? example:

$(document).keydown(function (e) {
            var keyCode = e.keyCode || e.which,
                arrow = {left: 37, up: 38, right: 39, down: 40 };
                if(keyCode == arrow.left) {
                    ex1();
                } else if (keyCode ==arrow.right) {
                    ex2();  
                } else if (keyCode == arrow.up) {
                    ex3();  
                } else if(keyCode == arrow.down) {
                    ex4();  
                }

});
도움이 되었습니까?

해결책

This is a very simple way to achieve this (If i've understood you correctly)

$(function() {
  var pressed = false; //Global var to hold state

  $(document).keydown(function (e) {

      if( pressed === true ) { //Already pressed don't allow another press
         alert("Please wait 5 seconds between key presses");
         return false;
      }

      pressed = true;
      setTimeout(function() { pressed = false }, 5000);

      var keyCode = e.keyCode || e.which;
      var arrow = {left: 37, up: 38, right: 39, down: 40 };              
      if(keyCode == arrow.left) {
         ex1();
      } else if (keyCode ==arrow.right) {
         ex2();  
      } else if (keyCode == arrow.up) {
         ex3();  
      } else if(keyCode == arrow.down) {
         ex4();  
      }
  });
});

Set a simple variable to hold the pressed state (true or false). If pressed is true return false so that no functionality happens Else let them press the button. set pressed to true and set a 5 second timeout to return the state back to false.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top