JavaScript屏蔽Backspace键的实现代码


Posted in Javascript onNovember 02, 2017

今天在IE浏览器下发现,当把使用readonly="readonly"属性将文本框设置成只读<input type="text" readonly="readonly"/>时有一个奇怪的问题:如果光标进入只读文本框,然后按下Backspace键,就会跳转到上一个页面,效果就像点击了浏览器的后退按钮返回前一个页面一样,而在火狐和google下没有这样的问题出现,为了解决这个问题,写了一个如下的处理方法,如果文本框是只读的,那么就禁用Backspace键。

代码如下:

//处理键盘事件 禁止后退键(Backspace)密码或单行、多行文本框除外
   function banBackSpace(e){  
     var ev = e || window.event;//获取event对象  
     var obj = ev.target || ev.srcElement;//获取事件源  
     var t = obj.type || obj.getAttribute('type');//获取事件源类型 
     //获取作为判断条件的事件类型
     var vReadOnly = obj.getAttribute('readonly');
     //处理null值情况
     vReadOnly = (vReadOnly == "") ? false : vReadOnly;
     //当敲Backspace键时,事件源类型为密码或单行、多行文本的,
     //并且readonly属性为true或enabled属性为false的,则退格键失效
     var flag1=(ev.keyCode == 8 && (t=="password" || t=="text" || t=="textarea") 
           && vReadOnly=="readonly")?true:false;
     //当敲Backspace键时,事件源类型非密码或单行、多行文本的,则退格键失效
     var flag2=(ev.keyCode == 8 && t != "password" && t != "text" && t != "textarea")
           ?true:false;    
     
     //判断
     if(flag2){
       return false;
     }
     if(flag1){  
       return false;  
     }  
   }
 window.onload=function(){
   //禁止后退键 作用于Firefox、Opera
   document.onkeypress=banBackSpace;
   //禁止后退键 作用于IE、Chrome
   document.onkeydown=banBackSpace;
 }

加上这样的处理之后,就可以解决"只读输入框在IE下按下Backspace键回退到前一个页面的问题了"

ps:用JS屏蔽backspace(退格删除)键或某一个指定键的完美代码

当我们的网页内有一个只读属性的表单时,如下:

<input type="text" readonly="readonly" name="HuoShangName" id="HuoShangName" />

上面的这个文本域只是用来向用户展示一些信息的,用户不能对其进行更改,所以加上了“readonly='readonly'”的只读属性,但是在IE8下面,从外观上是看不出来它和其它正常文本域的区别的,所以有的用户可能会对其进行一些删除或者添加内容的一些操作,比如当光标位于这个只读属性的文本域内时,如果用户按下了backspace(退格删除键),那么就会导致整个浏览器的后退,会让人很是郁闷,这时我们要做的就是屏蔽这个只读文本域上的一些指定的键,使用户按下这些键时不会引起浏览器的退后,刷新,或者前进等动作。

<input class="input w350" type="text" readonly="readonly" onkeydown="PingBi('8')" name="HuoShangName" id="HuoShangName" />

上面的代码中,onkeydown表示的是当按下按键时的意思,下面来JS函数pingbi的具体代码,也是非常简单的:

function PingBi(id){
 var k=window.event.keyCode;
 if(k==id){window.event.keyCode=0;window.event.returnValue=false;return false;}
}

好了,这样当光标位于只读属性的文本域内时,用户按下backspace(退格删除键)时就不会引起浏览器的后退了。

总结

以上所述是小编给大家介绍的JavaScript屏蔽Backspace键的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
js截取小数点后几位的写法
Nov 14 Javascript
jquery单行文字向上滚动效果示例
Mar 06 Javascript
js数组依据下标删除元素
Apr 14 Javascript
易被忽视的js事件问题总结
May 14 Javascript
Angular2从搭建环境到开发步骤详解
Oct 17 Javascript
JavaScript中的编码和解码函数
Feb 15 Javascript
详谈angularjs中路由页面强制更新的问题
Apr 24 Javascript
JS实现的邮箱提示补全效果示例
Jan 30 Javascript
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
Dec 05 jQuery
关于引入vue.js 文件的知识点总结
Jan 28 Javascript
基于JQuery实现页面定时弹出广告
May 08 jQuery
vue项目中微信登录的实现操作
Sep 08 Javascript
Vue源码学习之初始化模块init.js解析
Nov 02 #Javascript
为输入框加入数字js校验代码分享
Nov 02 #Javascript
详谈js中标准for循环与foreach(for in)的区别
Nov 02 #Javascript
使用 Node.js 模拟滑动拼图验证码操作的示例代码
Nov 02 #Javascript
基于JavaScript+HTML5 实现打地鼠小游戏逻辑流程图文详解(附完整代码)
Nov 02 #Javascript
vue-resource + json-server模拟数据的方法
Nov 02 #Javascript
详解vue-cli项目中用json-sever搭建mock服务器
Nov 02 #Javascript
You might like
php提示无法加载或mcrypt没有找到 PHP 扩展 mbstring解决办法
2012/03/27 PHP
用php实现百度网盘图片直链的代码分享
2012/11/01 PHP
PHP中shuffle数组值随便排序函数用法
2014/11/21 PHP
PHP基于IMAP收取邮件的方法示例
2017/08/07 PHP
php实现记事本案例
2020/10/20 PHP
Expandable &quot;Detail&quot; Table Rows
2007/08/29 Javascript
javascript与CSS复习(三)
2010/06/29 Javascript
jQuery EasyUI API 中文文档 搜索框
2011/09/29 Javascript
JQuery伸缩导航练习示例
2013/11/13 Javascript
jQuery动画与特效详解
2015/02/01 Javascript
微信小程序 高德地图SDK详解及简单实例(源码下载)
2017/01/11 Javascript
AngularJS表格添加序号的方法
2017/03/03 Javascript
微信小程序 首页制作简单实例
2017/04/07 Javascript
vue组件 $children,$refs,$parent的使用详解
2017/07/31 Javascript
Layui之table中的radio在切换分页时无法记住选中状态的解决方法
2019/09/02 Javascript
JS Thunk 函数的含义和用法实例总结
2020/04/08 Javascript
vue.js页面加载执行created,mounted的先后顺序说明
2020/11/07 Javascript
python自动化测试实例解析
2014/09/28 Python
Python的Django框架中的Context使用
2015/07/15 Python
Python安装官方whl包和tar.gz包的方法(推荐)
2017/06/04 Python
Python实现的FTP通信客户端与服务器端功能示例
2018/03/28 Python
python如何使用unittest测试接口
2018/04/04 Python
Python3实现zip分卷压缩过程解析
2019/10/09 Python
python实现简单颜色识别程序
2020/02/19 Python
LINUX下线程,GDI类的解释
2016/12/14 面试题
应届毕业生求职信范文
2013/12/18 职场文书
自动化专业个人求职信范文
2013/12/30 职场文书
国庆节演讲稿
2014/05/27 职场文书
咖啡店创业计划书
2014/08/15 职场文书
2014年卫生保健工作总结
2014/12/08 职场文书
个人催款函范文
2015/06/24 职场文书
优秀范文:《但愿人长久》教学反思3篇
2019/10/24 职场文书
制作能在nginx和IIS中使用的ssl证书
2021/06/21 Servers
alibaba seata服务端具体实现
2022/02/24 Java/Android
Linux下使用C语言代码搭建一个简单的HTTP服务器
2022/04/13 Servers
第四次工业革命,打工人与机器人的竞争
2022/04/21 数码科技