解决中文输入法event.keyCode的返回值总是229的问题

我在给一个客户做一个网页版的打字聊天项目时,要时时检测按键的键值,用onkeydown事件获得的键值总是229。经过研究找出了原因,换成onkeyup事件就可以了。另外还有一个问题:用外挂输入法(如小小输入法)在输入汉字时,每个字总是多出一键,经过研究找出,原来总出自动加上了一个231的键值,我的解决方法是把返回值为231的跳过就行了。

 

我的代码片段是:

<textarea class="box" id="typeInput" οnkeyup="checkKey()" οnpaste="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);  
  }
 }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值