当前位置: 代码迷 >> Web前端 >> 关于屏蔽backspace键的解决办法(ie中)
  详细解决方案

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

热度:131   发布时间:2012-11-03 10:57:44.0
关于屏蔽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绑定的事件

1 楼 576017120 2012-02-13  
这种方法,我感觉改动量还是比较小的,你还有什么更简单的方法吗?
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;
}
});
}
  相关解决方案