On second keypress (within a specified time frame)

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • akadeco
    New Member
    • Aug 2009
    • 7

    On second keypress (within a specified time frame)

    Hi

    I've been wondering if there was a simple way to detect if a user presses the same character on the keyboard twice within one second. I've written some code that kind of works but it's unreliable.

    Code:
    var escapeCount = 0;
    
    function reset() {
    	escapeCount = 0;
    	setTimeout('reset();', 1000);
    }
    
    window.onload = function() {
      reset();
    };
    
    document.onkeyup = function(e) {
      if (!e) var e = window.event;
      var code = e.keyCode ? e.keyCode : e.which;
      if (code == 27) escapeCount +=1;
      if (escapeCount == 2) {
        // stuff on second escape
      }
    };
    Is there a better way to do this? Thanks
  • RamananKalirajan
    Contributor
    • Mar 2008
    • 608

    #2
    Hi Akadeco,
    This is one way I have tried for your requirement.

    Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <TITLE> New Document </TITLE>
    <META NAME="Generator" CONTENT="EditPlus">
    <META NAME="Author" CONTENT="Ramanan Kalirajan">
    <META NAME="Keywords" CONTENT="Demo">
    <META NAME="Description" CONTENT="Demo">
    <script type="text/javascript">
    var lastChar = null;
    var lastTime = null;
    
    function checkReplicate(e)
    {
    	 if (!e) var e = window.event;
    	 var code = e.keyCode ? e.keyCode : e.which;
      if(lastChar==null)
      {
         lastTime = new Date();
    	 lastChar = code;
      }
      else
      {
         var diffTime = (new Date()) - lastTime;
    	 if(lastChar==code)
    	 {
    		if(diffTime<1000)
    		  alert("You have entered the same char twice");
    		  return false;
    	 }
    	 else
    	 {
    		lastTime = new Date();
    		lastChar = code;
    	 }
      }
      return true;
    }
    </script>
    </HEAD>
    <BODY>
    <input type="text" onkeydown="return checkReplicate(event)">
    </BODY>
    </HTML>
    Thanks and Regards
    Ramanan Kalirajan

    Comment

    Working...