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

浙公网安备 33010602011771号