读书人

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

发布时间: 2012-11-03 10:57:44 作者: rapoo

关于屏蔽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;
}
});
}

读书人网 >Web前端

热点推荐