`

关于屏蔽backspace键的解决方法(ie中)

 
阅读更多

主页面的body里加了这个事件 <body onkeydown="backspace();">
backspace 这个方法我加在了common.js里,
// 屏蔽backspace键
function backspace(){
    if(event.keyCode!=8){
         event.returnValue=true;
         return;
    }else{
        event.returnValue=false;
        return;
    }
}
在存在输入框、文本域的页面里绑定了这个事件
$(document).ready(function () {
        // 不屏蔽backspace
        $("input[type='text'][readonly!='readonly']").bind('keydown',function(){
            if(event.keyCode==8){
                event.keyCode=27;
              }
        });
       
        // 文本域时
        $("textarea").bind('keydown',function(){
              if(event.keyCode==8){
                  event.keyCode=27;
                }
        });
       
        // 密码时
        $("input[type='password']").bind('keydown',function(){
                    if(event.keyCode==8){
                        event.keyCode=27;
                      }
        });
});

另外测试发现:输入框绑定事件时,先执行js里面写的方法function,后执行用jquery里bind绑定的事件

分享到:
评论
2 楼 576017120 2012-02-13  
经同事的提醒,对代码进行了完善,只需要改一下公用的js就可以了,其他的不用做任何修改,这就是想要的效果。
思路:js在主页面全部加载,给body绑定全局的屏蔽事件,因为我这个里面重新加载页面都是通过jquery的load方法进行的,所以在方法的callback里面对不需要屏蔽的对象(input、password、textarea等)绑定不屏蔽事件(捕获到按的backapce键的时候,将键值给改成其他的)。
//屏蔽backspace键
$(document).ready(function () {

$("body").bind('keydown',function(){
if(event.keyCode!=8){
     event.returnValue=true;
     return;
    }else{
    event.returnValue=false;
    return;
    }
    });

});

// text、textera、password时,不屏蔽backspace键
function canBackspace(){
// text时
$("input[type='text'][readonly!='readonly']").bind('keydown',function(){
if(event.keyCode==8){
event.keyCode=27;
}
});

// 文本域时
$("textarea").bind('keydown',function(){
  if(event.keyCode==8){
  event.keyCode=27;
  }
    });

// 密码时
$("input[type='password']").bind('keydown',function(){
if(event.keyCode==8){
    event.keyCode=27;
}
});
}
1 楼 576017120 2012-02-13  
这种方法,我感觉改动量还是比较小的,你还有什么更简单的方法吗?

相关推荐

Global site tag (gtag.js) - Google Analytics