停止键重复保持。 (jQuery的)

时间:2012-03-13 19:54:44

标签: jquery

大家好我刚拿起jQuery

所以我的问题是我想要阻止一个键在你按下时重复

示例:编辑(我希望它停止..每个按键/ keydown一个字符)

按键:a

HoldDown:aaaaaaaaaaaaaaaaaaaaaaaaaaaaa

我的代码是:

 <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;});

我是以错误的方式解决这个问题吗?

3 个答案:

答案 0 :(得分:8)

使用.keyup()绑定代替.keypress()

答案 1 :(得分:4)

试试这个:http://jsfiddle.net/maniator/yFA8c/

每2秒只允许一个字母。

代码:

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;
    }
})​;​

答案 2 :(得分:2)

你应该使用keydown和keyup事件代替keypress。

所以,这是一个解决方案:

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;
});