The Stop key will repeat in standby mode. (Jquery)

Hi everyone, I just picked up jQuery

So my question is: I want the key not to be repeated when you hold it.

Example: Edit (I want it to stop .. so 1 character per keystroke / keydown)

keypress: a

HoldDown: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

My code is:

<input type='text'> var stop= false; var time =null; $(':text').keypress(function(e) { if(stop === true){e.preventDefault();} if (time !== null) { lastkey = time; } time = new Date().getTime(); var between = time - lastkey; if (between <= 70) { stop = true; } }); $(':text').keyup(function(){stop = false;}); 

Am I really wrong?

+8
jquery
source share
3 answers

Try the following: http://jsfiddle.net/maniator/yFA8c/

It will resolve a letter every 2 seconds.

The code:

 var mult = false, prev = 0; $('.mult').keydown(function(e) { if (!mult) { mult = true; prev = e.which; setTimeout(function() { mult = false; }, 2000) } else if (prev != e.which) { mult = false; } else { return false; } })​;​ 
+4
source share

Use .keyup() instead of .keypress() .

+8
source share

Instead, you should use keydown and keyup.

So here is the solution:

 window.keypressed = {}; $('#element').keydown(function(e){ if ( window.keypressed[e.which] ) { e.preventDefault(); } else { window.keypressed[e.which] = true; }).keyup(function(e){ window.keypressed[e.which] = false; }); 
+2
source share

All Articles