【转】通过onkeypress和onkeydown事件禁用键盘中某些键

上周提交了一个项目(内部使用的),一同事提出个BUG,说要禁用退格键(backspace或者叫后退键),因为这和他的习惯不一样,担心万一文字录入一半,他按了退格键,那整个页面的内容就白填了,然后信誓旦旦的说他做的系统中后退键都是不能用的,我这个系统有问题,当时因为事多,只把这个问题记录下来了,后来查了下他以前做的项目,也没有对退格键进行处理。自己的项目都没处理,到我这嚷嚷来了,算了,不和年轻人一般见识。不就禁用个后退键,简单。

 

其实说禁用也不是完全禁用,后退键在各浏览器下默认为点击了一下后退按钮,只要保证正常的文字录入还可以用,其他情况下的退格键一律禁掉。看代码吧。

 

Js代码    收藏代码
  1. <script type="text/javascript">  
  2. //处理键盘事件  
  3. function doKey(e){  
  4.     var ev = e || window.event;//获取event对象  
  5.     var obj = ev.target || ev.srcElement;//获取事件源  
  6.     var t = obj.type || obj.getAttribute('type');//获取事件源类型  
  7.     if(ev.keyCode == 8 && t != "password" && t != "text" && t != "textarea"){  
  8.         return false;  
  9.     }  
  10. }  
  11. //禁止后退键 作用于Firefox、Opera  
  12. document.οnkeypress=doKey;  
  13. //禁止后退键  作用于IE、Chrome  
  14. document.οnkeydοwn=doKey;  
  15. </script>  

 

Javascript代码   收藏代码
  1. <script type="text/javascript">  
  2.   
  3. //处理键盘事件 禁止后退键(Backspace)密码或单行、多行文本框除外  
  4. function banBackSpace(e){     
  5.     var ev = e || window.event;//获取event对象     
  6.     var obj = ev.target || ev.srcElement;//获取事件源     
  7.       
  8.     var t = obj.type || obj.getAttribute('type');//获取事件源类型    
  9.       
  10.     //获取作为判断条件的事件类型  
  11.     var vReadOnly = obj.getAttribute('readonly');  
  12.     var vEnabled = obj.getAttribute('enabled');  
  13.     //处理null值情况  
  14.     vReadOnly = (vReadOnly == null) ? false : vReadOnly;  
  15.     vEnabled = (vEnabled == null) ? true : vEnabled;  
  16.       
  17.     //当敲Backspace键时,事件源类型为密码或单行、多行文本的,  
  18.     //并且readonly属性为true或enabled属性为false的,则退格键失效  
  19.     var flag1=(ev.keyCode == 8 && (t=="password" || t=="text" || t=="textarea")   
  20.                 && (vReadOnly==true || vEnabled!=true))?true:false;  
  21.      
  22.     //当敲Backspace键时,事件源类型非密码或单行、多行文本的,则退格键失效  
  23.     var flag2=(ev.keyCode == 8 && t != "password" && t != "text" && t != "textarea")  
  24.                 ?true:false;          
  25.       
  26.     //判断  
  27.     if(flag2){  
  28.         return false;  
  29.     }  
  30.     if(flag1){     
  31.         return false;     
  32.     }     
  33. }  
  34.   
  35. //禁止后退键 作用于Firefox、Opera  
  36. document.οnkeypress=banBackSpace;  
  37. //禁止后退键  作用于IE、Chrome  
  38. document.οnkeydοwn=banBackSpace;  
  39.   
  40. </script>  

 

2012年9月17日 11:24

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值