js屏蔽键盘退格键(backspace或者叫后退键)2

提出需求:

当键盘敲下后退键(Backspace)后  
1、禁止浏览器自动后退  
2、但不影响密码、单行文本、多行文本输入框等的回退操作  

解决方案:

网上搜了一下,发现有不少解决方案,相比较之下,zywang的方案较佳,(原文见http://zywang.iteye.com/blog/700263) 

在其基础上,进行补充和完善,以满足需求,整理后的代码如下:

 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.onkeypress=banBackSpace;  
37 //禁止后退键  作用于IE、Chrome  
38 document.onkeydown=banBackSpace;  
39   
40 </script>  

 

转自:http://blog.csdn.net/tonyd1989/article/details/7711853

posted @ 2014-09-01 15:22  Lorence Zhang  阅读(191)  评论(0)    收藏  举报