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>
     
     
  • 相关阅读:
    [转载]#2002 服务器没有响应 (或者本地 MySQL 服务器的套接字没有正确配置
    [转载]使用Cufon技术实现Web自定义字体
    [转载]Fedora14下MySQL、Apache、PHP、phpMyAdmin的安装步聚
    GUID的使用
    访问来源记录
    MongoDB数据库的基本概念
    域登录验证
    sql语法和MongoDB语法的对应关系
    ADO.NET数据集添加虚拟字段
    MongoDB开发常用资源地址
  • 原文地址:https://www.cnblogs.com/yangzhilong/p/3369711.html
Copyright © 2011-2022 走看看