如何在js中识别键盘某个键长按?

My_ideal2010 2012-01-06 02:40:20
如何在js中识别键盘某个键长按?
比如我一直按着 上方向或 下方向键, 这样重复调用同一个函数,在线等。。。。求高手!!!
...全文
1236 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenjianhuacool 2012-01-06
  • 打赏
  • 举报
回复
很简单的






。你只要使用keydown就可以了。其他的是不行的。只要把方法写在keydown里面,当你按住按键不放的时候,就会一直的触发这个事件。有用,请支持一下。谢谢












峭沙 2012-01-06
  • 打赏
  • 举报
回复
<!doctype>
<html>
<head>
</head>
<body>
<div id="debug"></div>
<script>
function test(key){
debug.innerHTML += String.fromCharCode(key);
};

var date, debug = document.getElementById('debug');
document.onkeypress = function(event){
var key = event ? event.charCode : window.event.keyCode,
_date = new Date().getTime();
if(!date){
date = _date;
}else if(_date >= date + 500){
test(key);
date = _date;
}
}
document.onkeyup = function(){
date = 0;
}
</script>
</body>
</html>
--浮生若梦-- 2012-01-06
  • 打赏
  • 举报
回复 1
[Quote=引用 4 楼 my_ideal 的回复:]
引用 3 楼 a87345293 的回复:

某个键长按应该不需要js来识别吧?
这个应该是键盘本身的属性吧?
就像在input输入框里你长按某个键,相应的字母就会重复出现
一样的道理
一直按着 上方向或 下方向键, 这样重复调用同一个函数
这是不需要另外设置键的读取问题


彻底觉悟了, 我事件绑错了, 绑在了 keyup 上 长按肯定没了效果,绑down上就oK了 囧!
……
[/Quote]
方法分开吧,把需要连续执行的方法独立开来,在方法里用setTimeout自调用方法,在停止按键时停止setTimeout的方法
KeenWon 2012-01-06
  • 打赏
  • 举报
回复
[Quote=引用楼主 my_ideal 的回复:]
如何在js中识别键盘某个键长按?
比如我一直按着 上方向或 下方向键, 这样重复调用同一个函数,在线等。。。。求高手!!!
[/Quote]
你试试啊,长按一个键,会不停地在屏幕上打印这个键的值,同理也可以重复调用一个函数
My_ideal2010 2012-01-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 a87345293 的回复:]

某个键长按应该不需要js来识别吧?
这个应该是键盘本身的属性吧?
就像在input输入框里你长按某个键,相应的字母就会重复出现
一样的道理
一直按着 上方向或 下方向键, 这样重复调用同一个函数
这是不需要另外设置键的读取问题
[/Quote]

彻底觉悟了, 我事件绑错了, 绑在了 keyup 上 长按肯定没了效果,绑down上就oK了 囧!
但是我这边 必须要绑 keyup上 因为要取值,更囧了!
明悟 2012-01-06
  • 打赏
  • 举报
回复
某个键长按应该不需要js来识别吧?
这个应该是键盘本身的属性吧?
就像在input输入框里你长按某个键,相应的字母就会重复出现
一样的道理
一直按着 上方向或 下方向键, 这样重复调用同一个函数
这是不需要另外设置键的读取问题
My_ideal2010 2012-01-06
  • 打赏
  • 举报
回复
为搓哟哥哥 你有看清楚 问题吗 老兄 请抓住下关键字 “长”
KeenWon 2012-01-06
  • 打赏
  • 举报
回复

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<HTML>
<HEAD><TITLE>js 按键记录</TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="羽殇仁">
<META NAME="Keywords" CONTENT="js 按键记录">
<META NAME="Description" CONTENT="js 按键 记录">
</HEAD>
<BODY>
<script type="text/javascript">
var keystring = ""; //记录按键的字符串
function $(s) { return document.getElementById(s) ? document.getElementById(s) : s; }
function keypress(e) {
var currKey = 0, CapsLock = 0, e = e || event;
currKey = e.keyCode || e.which || e.charCode;
CapsLock = currKey >= 65 && currKey <= 90;
switch (currKey) {
//屏蔽了退格、制表、回车、空格、方向键、删除键
case 8: case 9: case 13: case 32: case 37: case 38: case 39: case 40: case 46: keyName = ""; break;
default: keyName = String.fromCharCode(currKey); break;
}
keystring += keyName;
}
function keydown(e) {
var e = e || event;
var currKey = e.keyCode || e.which || e.charCode;
if ((currKey > 7 && currKey < 14) || (currKey > 31 && currKey < 47)) {
switch (currKey) {
case 8: keyName = "[退格]"; break;
case 9: keyName = "[制表]"; break;
case 13: keyName = "[回车]"; break;
case 32: keyName = "[空格]"; break;
case 33: keyName = "[PageUp]"; break;
case 34: keyName = "[PageDown]"; break;
case 35: keyName = "[End]"; break;
case 36: keyName = "[Home]"; break;
case 37: keyName = "[方向键左]"; break;
case 38: keyName = "[方向键上]"; break;
case 39: keyName = "[方向键右]"; break;
case 40: keyName = "[方向键下]"; break;
case 46: keyName = "[删除]"; break;
default: keyName = ""; break;
}
keystring += keyName;
}
$("content").innerHTML = keystring;
}
function keyup(e) {
$("content").innerHTML = keystring;
}
document.onkeypress = keypress;
document.onkeydown = keydown;
document.onkeyup = keyup;
</script>
<input type="text" />
<input type="button" value="清空记录" onclick="$('content').innerHTML = '';keystring = '';"/>
<br/>请按下任意键查看键盘响应键值:<span id="content"></span>
</BODY>
</HTML>

改改就能用了
详细这里:http://blog.csdn.net/semanwmj/article/details/7063758
关于本Demo: 模仿新浪微博的表情操作,借鉴其他开发者的demo并加以完善 功能: 1、仿新浪微博的表情,可以输入自定义表情、emoji表情 2、使用过的表情按时间顺序显示在最近使用的表情 3、表情点击能输入到textView按可预览表情 4、删除按可连续删除 5、能将一串包含图片表情的attributedText的图片表情转化为相应的字符串(作为传输到后台使用) 6、能将一串普通字符串包含的表情字符串转化为图片表情的attributedText(后台返回字符串数据可直接转化作为前端使用) 7、在textView手动输入某表情对应的字符串,能生成相应的图片表情,并且selectedRange会重新设置到合理的位置 8、能拷贝图片表情,拷贝结果为图片表情对应的字符串,粘贴到其他普通的textVeiw会以该表情对应的字符串显示 缺点: 1、表情有一点点与新浪微博的不一样,基本一致,可忽略 2、图片表情在textView的间距不知道如何改变(新浪微博的表情间距是有稍微一点距离的,显得不太拥挤,并且点击切换光标时很容易,不会像我一样老是弹出UIMenuController)【尝试各种方法都不行,望懂的大神可以帮助我一下】 3、文字转表情的方法应该与新浪微博的不一样,我的实现很复杂(测试比较了我的和新浪微博的转化,先在textView输入几百上千个表情,此时textView输入会变得很慢,新浪微博也是如此,因此新浪微博应该也是有遍历、全文转化的过程,在同样上千个表情存在的情况下,快速输入"123456789",等待反应时间,新浪微博的大概几秒钟后显示出来,而我的textView则要十几秒才能显示出来,因此判断我的转化方法不太好) 虽然在几百上千个表情的情况下输入反应很慢,但是一般不会发那么多表情,在表情不多的情况下我的转化速度是可以忽略的 感谢读者: 感谢每一位支持的读者!如果有bug、不足的地方,或上文我提到的能帮到我的地方,都可以给我留言,谢谢!

87,923

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧