JavaScript如何禁止Backspace键
今天在IE浏览器下发现,当把使用readonly="readonly"属性将文本框设置成只读<inputtype="text"readonly="readonly"/>时有一个奇怪的问题:如果光标进入只读文本框,然后按下Backspace键,就会跳转到上一个页面,效果就像点击了浏览器的后退按钮返回前一个页面一样,而在火狐和google下没有这样的问题出现,为了解决这个问题,写了一个如下的处理方法,如果文本框是只读的,那么就禁用Backspace键。
代码如下:
//处理键盘事件禁止后退键(Backspace)密码或单行、多行文本框除外
functionbanBackSpace(e){
varev=e||window.event;//获取event对象
varobj=ev.target||ev.srcElement;//获取事件源
vart=obj.type||obj.getAttribute('type');//获取事件源类型
//获取作为判断条件的事件类型
varvReadOnly=obj.getAttribute('readonly');
//处理null值情况
vReadOnly=(vReadOnly=="")?false:vReadOnly;
//当敲Backspace键时,事件源类型为密码或单行、多行文本的,
//并且readonly属性为true或enabled属性为false的,则退格键失效
varflag1=(ev.keyCode==8&&(t=="password"||t=="text"||t=="textarea")
&&vReadOnly=="readonly")?true:false;
//当敲Backspace键时,事件源类型非密码或单行、多行文本的,则退格键失效
varflag2=(ev.keyCode==8&&t!="password"&&t!="text"&&t!="textarea")
?true:false;
//判断
if(flag2){
returnfalse;
}
if(flag1){
returnfalse;
}
}
window.onload=function(){
//禁止后退键作用于Firefox、Opera
document.onkeypress=banBackSpace;
//禁止后退键作用于IE、Chrome
document.onkeydown=banBackSpace;
}
加上这样的处理之后,就可以轻松解决“只读输入框在IE下按下Backspace键回退到前一个页面”的问题了。
希望大家喜欢这篇文章,继续关注小编更新整理的文章。