`
sty2008boy
  • 浏览: 302442 次
  • 性别: Icon_minigender_1
  • 来自: 太原
社区版块
存档分类
最新评论

javascript禁用Backspace退格键

阅读更多
今天有个新需求,要求在窗口中编辑的时候禁用掉退格键,因为退格键会发生页面后退的动作,编辑的时候非常不便.

在网上搜索了一下,有两种方法,最后决定采用这位仁兄的方法,见http://volunteer521.iteye.com/blog/830522,这是其根据第一种方法做的改良,但是发现还是存在bug,最后做解释!

这里容我多说几句,先说第一种方法: 原理是采用键盘监听,处理键盘事件,这里他的处理方法是将type="text" "password"及"textarea"的输入框以外的元素做了退格键的禁用.

javascript代码


//处理键盘事件

function doKey(e){

var ev = e || window.event;//获取event对象

var obj = ev.target || ev.srcElement;//获取事件源

var t = obj.type || obj.getAttribute('type');//获取事件源类型

if(ev.keyCode == 8 && t != "password" && t != "text" && t != "textarea"){

return false;

}

}

//禁止后退键 作用于Firefox、Opera

document.onkeypress=doKey;

//禁止后退键  作用于IE、Chrome

document.onkeydown=doKey;
以上的bug在于,当编辑窗口中有一个不可编辑的输入框的时候,如果光标的位置在其上,敲退格键的时候依然会发生页面后退.所以,第二种方法做了改良:代码如下

//处理键盘事件 禁止后退键(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;
而以上的bug在于,在浏览器中,光标在一个不可编辑的输入框上的时候,退格键依然会产生页面后退效果!

原因: 在Firefox及Chrome中 obj.getAttribute('readonly') 返回的值是null,或"",而在IE中,该方法返回的是"readonly"或"",而且根据测试,

并没有"enable"的属性,而应该是"disabled",因此,上述方法固然会失效.而且获取DOM的对象属性及标准属性的时候,不应该采用getAttribute方法,这是不准确的,应采用obj.attribute标准方法,这样不会存在因浏览器对js的解释差异而导致的兼容性问题.因此修正以上bug后,产出的代码如下:

//处理键盘事件 禁止后退键(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.readOnly;
    var vDisabled = obj.disabled;
    //处理undefined值情况
    vReadOnly = (vReadOnly == undefined) ? false : vReadOnly;
    vDisabled = (vDisabled == undefined) ? true : vDisabled;
    //当敲Backspace键时,事件源类型为密码或单行、多行文本的,
    //并且readOnly属性为true或disabled属性为true的,则退格键失效
    var flag1= ev.keyCode == 8 && (t=="password" || t=="text" || t=="textarea")&& (vReadOnly==true || vDisabled==true);
    //当敲Backspace键时,事件源类型非密码或单行、多行文本的,则退格键失效
    var flag2= ev.keyCode == 8 && t != "password" && t != "text" && t != "textarea" ;
    //判断
    if(flag2 || flag1)return false;
}
//禁止退格键 作用于Firefox、Opera
document.onkeypress=banBackSpace;
//禁止退格键 作用于IE、Chrome
document.onkeydown=banBackSpace;
分享到:
评论

相关推荐

    js禁止使用退格键

    ### 禁止使用退格键的JavaScript实现 在网页应用开发中,有时为了保护用户数据的安全性或防止误操作,我们需要对用户的某些输入行为进行限制。比如,在表单填写过程中,可能不希望用户能够通过退格键(Backspace)...

    jquery+js两种方式实现的禁止退格键回退

    在网页应用中,有时我们需要禁用用户使用退格键(Backspace)进行页面回退,以防止意外的数据丢失或功能误触发。标题提到的“jquery+js两种方式实现的禁止退格键回退”主要涉及JavaScript和jQuery这两种方法来阻止...

    JS禁用浏览器退格键实现思路及代码

    首先,实现禁用退格键的基本思路是通过JavaScript监听键盘事件,并在用户尝试通过退格键删除信息时进行拦截。具体实现可以分为两个主要的思路: 1. 禁止退格键导致浏览器后退到前一页面或表单状态。通常情况下,按...

    javascript禁用键盘功能键让右击及其他键无效.docx

    ### JavaScript禁用键盘功能键及鼠标操作 在Web开发中,有时为了保护网站内容或提供特定的用户体验,开发者可能会选择禁用浏览器的一些默认行为,比如禁用键盘上的某些功能键、鼠标右键点击等。下面将详细介绍如何...

    js屏蔽退格键(backspace或者叫后退键与F5)

    在Web开发中,通常会遇到需要屏蔽浏览器默认行为的场景,比如在编辑文章的页面中屏蔽用户按退格键(Backspace)或F5刷新页面,以免造成正在编辑的内容丢失。尤其是退格键,它不仅会删除文本框中的字符,还会导致...

    js 禁用只读文本框获得焦点时的退格键

    为了解决这个问题,我们可以编写一段JavaScript代码来禁用只读文本框在获得焦点时的退格键功能。以下是一个简单的实现方案: ```javascript document.documentElement.onkeydown = function(evt) { var b = !!evt,...

    javascript禁制后退键(Backspace)实例代码.docx

    ### JavaScript禁用后退键(Backspace)实例详解 #### 一、背景介绍 在Web开发过程中,有时候我们需要对用户的操作进行一定的限制,比如在某些特定的表单或输入框中,不允许用户通过按后退键(Backspace)来撤销之前...

    JS 禁用 退格-刷新-禁用地址栏-菜单栏-右键-窗口最大化

    例如,你可以监听`keydown`事件,并检查是否是退格键(键码127或`event.key`为"Backspace"),然后阻止其默认动作。 ```javascript document.addEventListener('keydown', function(event) { if (event.keyCode ==...

    JQuery防止退格键网页后退的实现代码

    在网页开发中,有时我们需要禁用用户使用浏览器的退格键(Backspace)来防止其触发页面后退的行为,特别是在用户进行数据输入或者操作时,误按退格键导致页面跳转可能会造成不便或数据丢失。这篇内容主要讨论的是...

    如何在只读文本框中停止按退格键?

    在描述中提到的"启用"和"禁用"实际上是指允许或阻止特定行为,比如在这里是阻止用户按下退格键(Backspace)。 在HTML5中,我们可以创建一个只读文本框通过设置`readonly`属性为`true`。例如: ```html 这是只读...

    javascript禁用键盘功能键让右击及其他键无效

    例如,以下代码会屏蔽F1键、F5键(刷新)、退格键(Backspace)以及Ctrl+R(重新加载): ```javascript document.onkeydown = function(event) { if (event.keyCode == 8 || // Backspace event.keyCode == ...

    JQuery实现防止退格键返回的方法

    为了防止退格键(Backspace)导致浏览器返回上一页的行为,我们需要绑定键盘按下(keydown)事件,并在事件处理函数中判断按键的代码(keyCode)。退格键的keyCode值为8。通过判断当前事件的目标元素(target),...

    web 屏蔽BackSpace键实例代码

    针对这个问题,我们可以编写JavaScript代码来屏蔽退格键(Backspace)的功能。以下是一个具体的实例代码: ```javascript // 处理键盘事件,禁止后退键(Backspace)密码或单行、多行文本框除外 function ...

    javascript禁制后退键(Backspace)实例代码

    在JavaScript编程中,有时我们可能需要禁用浏览器的默认行为,比如禁制用户按下后退键(Backspace)的功能。这通常在特定场景下进行,比如防止用户在输入表单时误触后退键导致数据丢失。下面我们将详细讨论如何通过...

    使用jquery实现IE下按backspace相当于返回操作

    在网页开发中,有时我们需要对用户的键盘操作进行特殊处理,特别是在一些特定的场景下,比如在SPA(单页面应用)中,我们可能希望阻止用户在非输入区域按下退格键(Backspace)时触发浏览器的后退功能。这是因为,...

    jQuery禁用键盘后退屏蔽F5刷新及禁用右键单击

    如果希望禁用退格键(Backspace)使得用户无法通过按退格键返回上一页,可以使用以下代码: ```javascript $(document).keydown(function (e) { var doPrevent; if (e.keyCode == 8) { var d = e.srcElement |...

    Javascript KeyCode大全

    - **BackSpace (8)**:退格键,用于删除光标前的一个字符。 - **Tab (9)**:制表符键,用于跳转到下一个可编辑字段。 - **Clear (12)**:清除键,在某些键盘上可用,用于清除当前输入。 - **Enter (13)**:回车键,...

Global site tag (gtag.js) - Google Analytics