3个回答
展开全部
用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>
展开全部
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);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是一下event.preventDefault()这个方法!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询