大家好我刚拿起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;});
我是以错误的方式解决这个问题吗?
答案 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;
});