Eddy Unruh
Eddy Unruh

Reputation: 616

jQuery - detect if enter is pressed more than X times in X seconds

I got an AJAX chat and this is the code to send messages:

$('#usermsg').keydown(function(e) {
    var key = e.which;
    if(key == 13)  // the enter key code
    {
        var clientmsg = $("#usermsg").html();
        if((jQuery.trim(clientmsg)).length==0)
        {
            return false;
        }

        $.ajax({
             // .............
        });
    }
});

I'd like to detect if someone pressed enter more than 3 times in 2 seconds while on $('#usermsg')

What would be the shortest and best way to do it?

Upvotes: 5

Views: 164

Answers (2)

ixpl0
ixpl0

Reputation: 756

var enterCounter = 0;

$('#usermsg').keydown(function(e) {
    var key = e.which;
    if(key == 13) { // the enter key code        

        if (++enterCounter > 3) alert('pressed enter more than 3 times in 2 seconds');
        setTimeout(function(){enterCounter--;}, 2000);

        var clientmsg = $("#usermsg").html();
        if((jQuery.trim(clientmsg)).length==0) {            
            return false;
        }

        $.ajax({
             // .............
        });
    }
});

Upvotes: 4

Vixed
Vixed

Reputation: 3509

var countTime=0;
$('#usermsg').on('keydown', function(e){
  var key = e.which;
  if(key == 13) {  // the enter key code
    if (countTime==0){
      countTime++;
      setTimeout(function(){countTime=0},2000)
      var clientmsg = $("#usermsg").html();
      if((jQuery.trim(clientmsg)).length==0) {
        return false;
      }
      $.ajax({
        // .............
      });
    } else {
      countTime++;
      if (countTime>=3) countTime=0;
    }
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="usermsg"/>

Upvotes: 0

Related Questions