主页面的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绑定的事件
思路: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;
}
});
}