zoukankan      html  css  js  c++  java
  • JS禁止后退键(backspace)使浏览器后退

    背景说明:

    今天项目测试中,同事发现一个Bug,当键盘敲下后退键(Backspace)后,浏览器自动后退,不符合需求,故建议禁止浏览器后退键。

     

    提出需求:

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

      

    解决方案:

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

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

     
    <script type="text/javascript">
    
    //处理键盘事件 禁止后退键(Backspace)密码或单行、多行文本框除外
    function banBackSpace(e){   
        var ev = e || window.event;//获取event对象   
        var obj = ev.target || ev.srcElement;//获取事件源   
        
        var t = obj.type || obj.getAttribute('type');//获取事件源类型  
        
        //获取作为判断条件的事件类型
        var vReadOnly = obj.getAttribute('readonly');
        var vEnabled = obj.getAttribute('enabled');
        //处理null值情况
        vReadOnly = (vReadOnly == null) ? false : vReadOnly;
        vEnabled = (vEnabled == null) ? true : vEnabled;
        
        //当敲Backspace键时,事件源类型为密码或单行、多行文本的,
        //并且readonly属性为true或enabled属性为false的,则退格键失效
        var flag1=(ev.keyCode == 8 && (t=="password" || t=="text" || t=="textarea") 
                    && (vReadOnly==true || vEnabled!=true))?true:false;
       
        //当敲Backspace键时,事件源类型非密码或单行、多行文本的,则退格键失效
        var flag2=(ev.keyCode == 8 && t != "password" && t != "text" && t != "textarea")
                    ?true:false;        
        
        //判断
        if(flag2){
            return false;
        }
        if(flag1){   
            return false;   
        }   
    }
    
    //禁止后退键 作用于Firefox、Opera
    document.onkeypress=banBackSpace;
    //禁止后退键  作用于IE、Chrome
    document.onkeydown=banBackSpace;
    
    </script>
     
     
  • 相关阅读:
    P1410 子序列
    P1395 会议 (树形dp)
    P2580 于是他错误的点名开始了
    LC1127. 用户购买平台
    LC 1308. Running Total for Different Genders
    P1340 兽径管理 (最小生成树)
    P1330 封锁阳光大学 (二分图染色)
    CF1296F Berland Beauty (Tree, dfs/bfs, LCA)
    顺丰的Cookie条款
    服务器判断客户端的用户名和密码(token的身份验证)
  • 原文地址:https://www.cnblogs.com/yangzhilong/p/3369711.html
Copyright © 2011-2022 走看看