js 如何屏蔽按住键盘某个按键不停的输入,实现按住也只能输入一个字符。

如题... 如题 展开
 我来答
前端小茶馆
2014-02-10 · TA获得超过962个赞
知道小有建树答主
回答量:329
采纳率:0%
帮助的人:340万
展开全部

用keydown和keyup事件同时进行控制,比如有一个变量,当该按键摁下时为false,按键摁起是为true。

我的代码里你只需要修改两处就可以了。一个是preventCode,将你所需要的按键的键值存进去;另一个是 // 只执行一次  的地方,填写你所要执行的事件。

<div id="main"></div>
<script type="text/javascript">
(function() {
var preventCode = [13, 32, 37, 38, 39, 40]; // 要只执行一次事件的按键的键值,此处屏蔽的按键依次是:enter、空格、左、上、右、下
var isRunning   = []; // 不用管

document.onkeydown = keyDown;
document.onkeyup   = keyUp;
function keyDown(event){
event = event || window.event;
var keycode = event.which || event.keyCode;
if(preventCode.in_array(keycode)>=0){
if(typeof isRunning[keycode] == "undefined" || isRunning[keycode]==false){
isRunning[keycode] = true;
// 只执行一次的事件

var myDate = new Date();
// $("#main").html(myDate.getTime());
document.getElementById("main").innerHTML = myDate.getTime();
}
}else{
// 连续执行的事件

}
}
function keyUp(event){
event = event || window.event;
var keycode = event.which || event.keyCode;
if(preventCode.in_array(keycode)>=0){
isRunning[keycode] = false;
}
}

// 检测数组中是否有某值
Array.prototype.in_array = function(c){
for(i=0;i<this.length && this[i]!=c;i++);
return (i==this.length) ? -1 : i;
}
})();
</script>
百度网友1f29177
2014-02-10 · TA获得超过646个赞
知道小有建树答主
回答量:240
采纳率:0%
帮助的人:338万
展开全部
var kflag = false;
var ele = document.getElementById('input id');
ele.addEventListener('keypress', function(e){
    if( kflag ){
        e.preventDefault();
    }else{
        kflag = true;
    }
}, false);
ele.addEventListener('keyup', function(e){
    kflag = false;
}, false);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cs903016
2014-02-10 · TA获得超过1179个赞
知道小有建树答主
回答量:2599
采纳率:80%
帮助的人:1689万
展开全部
是一下event.preventDefault()这个方法!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式