我在给一个客户做一个网页版的打字聊天项目时,要时时检测按键的键值,用onkeydown事件获得的键值总是229。经过研究找出了原因,换成onkeyup事件就可以了。另外还有一个问题:用外挂输入法(如小小输入法)在输入汉字时,每个字总是多出一键,经过研究找出,原来总出自动加上了一个231的键值,我的解决方法是把返回值为231的跳过就行了。
我的代码片段是:
<textarea class="box" id="typeInput" onkeyup="checkKey()" onpaste="return false" onPropertyChange="checkduicuo()"></textarea>
//检测按下的键
function checkKey(){
if (event.keyCode != 231) jijiancishu++; //击键次数
zongjianshu.innerText=jijiancishu; //总击键次数
if (event.keyCode == 8){tuigecishu++;} //退格数
tuige.innerText=tuigecishu;
if (event.keyCode == 13){event.keyCode=0;return false;}//屏蔽回车键
}
//时时判断对错
function checkduicuo()
{
text1=typeContent.innerText;
text2=$("typeInput").value;
var zongzishuint=text2.length;
zongzishu.innerText=zongzishuint;
if (zongzishuint>0) machang.innerText=Math.round(jijiancishu/zongzishuint*10)/10; //平均码长
cuo=0;dui=0;xianshizi="";
for (i=0;i<text2.length;i++)
{
xianshizi=xianshizi+"<span class="
if (text2.substr(i,1)!=text1.substr(i,1))
{
cuo=cuo+1;
xianshizi=xianshizi+"bg_c"
} else {
dui=dui+1;
xianshizi=xianshizi+"bg_d"
}
xianshizi=xianshizi+">"+text1.substr(i,1)+"</span>";
}
typeContent.innerHTML=xianshizi+"<span class=redLine>"+text1.substr(i,1)+"</span>"+text1.substr(i+1);
var meihangzishu=38; //每行字数
var hang1=(text1.length - text1.length % meihangzishu)/meihangzishu;
var hang2=(zongzishuint-zongzishuint % meihangzishu)/meihangzishu-2;
typeContent.scrollTop=typeContent.scrollHeight/hang1*hang2;
typeCuo.innerText=cuo;
zhengquelv.innerText=Math.round(dui/(dui+cuo)*1000)/10+"%";
if (text1.length==text2.length && text2.length>0) //是否打完
{
if (confirm('发送成绩至聊天框吗?')){
var str=showGengdaTitle.innerText+"<br />";
if ($("chkSudu").checked) str += "速度:"+sudu.innerText;
if ($("chkJijian").checked) str += ",击键:" + jijian.innerText;
if ($("chkMachang").checked) str += ",码长:"+ machang.innerText;
if ($("chkTuige").checked) str += ",退格:"+tuige.innerText;
if ($("chkTypecuo").checked) str += ",错字:"+typeCuo.innerText;
if ($("chkZhengquelv").checked) str += ",正确率:"+zhengquelv.innerText+"%";
if ($("chkZongzishu").checked) str += ",总字数:"+zongzishu.innerText;
if ($("chkZongmiaoshu").checked) str += ",总秒数:"+zongmiaoshu.innerText;
if ($("chkZongjianshu").checked) str += ",总键数:"+zongjianshu.innerText;
if ($("chkShurufa").checked) str += ",输入法:"+$("shurufa").value;
sendChatContent("send",str,0);
}
}
}
分享到:
相关推荐
event.keycode大全(javascript) event.keycode大全(javascript) event.keycode大全(javascript) event.keycode大全(javascript) event.keycode大全(javascript)
window.event.keycode值大全,内含javascript中所有键盘键值,查找方便简单。
javascript键盘事件大全,最全的键盘事件event.keycode
(event.keyCode==46)&&!(event.keyCode==8)&&!(event.keyCode==37)&&!(event.keyCode==39)&&!(event.keyCode==190)) if(!((event.keyCode>=48&&event.keyCode<=57)||(event.keyCode>=96&&event.keyCode<=105))...
event.keycode 值 大全
在阅读本文前,相信大家应该都有所了解,在js获取键盘按下的键值有:event.keyCode、event.charCode和event.which。 其中: 谷歌浏览器:对event.keyCode、event.charCode和event.which都兼容。 火狐浏览器:对event...
js中event.keycode键值大全,真的很全
最全的js_event.keycode值列表
列举了所有keyCode的值,方便开发者利用。
js_event.keycode值大全,匹配准确,快速开发查阅
比如你的INPUT是:那么你在里边加入:onKeypress="javascript:if(event.keyCode == 32)event.returnValue = false;"成为:(event.keyCode == 32)event.returnValue = false;">本人测试有效,如果解决记得加分哦
我们之前发过不少关于event.keyCode相关的文章,大家都可以参考下。
input type=”text” onkeydown=”keyNumAll(event);” > Javascript 代码 代码如下: function keyNumAll(evt){ //兼容IE和Firefox获得keyBoardEvent对象 evt = (evt) ? evt : ((window.event) ? window.event : ...
javaScript window.event.keyCode 集合,对于事件的代码获取可以用脚本监听来实现。
asp.net 键盘事件 keycode asc码 keycode控制按钮 js event.keycode 键盘事件
js获取键盘按键的键码event.keyCode,下面则是键盘的键码分布,记录一下,以备不时之需
网上收集的KeyCode值方便大家查找: keycode 8 = BackSpace BackSpace keycode 9 = Tab Tab keycode 12 = Clear keycode 13 = Enter keycode 16 = Shift_L keycode 17 = Control_L keycode 18 = Alt_L keycode 19 = ...