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 相关文章推荐
IE本地存储userdata的一个bug说明
Jul 01 Javascript
JS简单实现文件上传实例代码(无需插件)
Nov 15 Javascript
jquery 新建的元素事件绑定问题解决方案
Jun 12 Javascript
jQuery实现带分组数据的Table表头排序实例分析
Nov 24 Javascript
浅谈javascript中的事件冒泡和事件捕获
Dec 28 Javascript
用jQuery实现优酷首页轮播图
Jan 09 Javascript
vue快捷键与基础指令详解
Jun 01 Javascript
详解Koa中更方便简单发送响应的方式
Jul 20 Javascript
详解vue axios二次封装
Jul 22 Javascript
Vue项目中如何使用Axios封装http请求详解
Oct 23 Javascript
浅析Vue下的components模板使用及应用
Nov 27 Javascript
Vue触发input选取文件点击事件操作
Aug 07 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 图像函数大举例(非原创)
2009/06/20 PHP
php empty,isset,is_null判断比较(差异与异同)
2010/10/19 PHP
php设计模式 Adapter(适配器模式)
2011/06/26 PHP
thinkphp5.0整合phpsocketio完整攻略(绕坑)
2018/10/12 PHP
ThinkPHP5.0框架实现切换数据库的方法分析
2019/10/30 PHP
Aster vs Newbee BO3 第三场2.18
2021/03/10 DOTA
获取DOM对象的几种扩展及简写
2006/10/09 Javascript
Javascript Tab 导航插件 (23个)
2009/06/11 Javascript
jquery实现图片翻页效果
2013/12/23 Javascript
调用DOM对象的focus使文本框获得焦点
2014/02/19 Javascript
JavaScript AJAX之惰性载入函数
2014/08/27 Javascript
jquery限定文本框只能输入数字(整数和小数)
2016/01/08 Javascript
JavaScript实现事件的中断传播和行为阻止方法示例
2017/01/20 Javascript
简单的JS控制button颜色随点击更改的实现方法
2017/04/17 Javascript
JS 判断某变量是否为某数组中的一个值的3种方法(总结)
2017/07/10 Javascript
解决vue2中使用axios http请求出现的问题
2018/03/05 Javascript
解决vue动态为数据添加新属性遇到的问题
2018/09/18 Javascript
老生常谈JavaScript获取CSS样式的方法(兼容各浏览器)
2018/09/19 Javascript
微信小程序使用canvas的画图操作示例
2019/01/18 Javascript
vue语法自动转typescript(解放双手)
2019/09/18 Javascript
[01:10:16]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第一局
2016/02/27 DOTA
[34:08]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS EG
2018/03/30 DOTA
[41:56]Spirit vs Liquid Supermajor小组赛A组 BO3 第一场 6.2
2018/06/03 DOTA
python素数筛选法浅析
2018/03/19 Python
Python神奇的内置函数locals的实例讲解
2019/02/22 Python
Windows+Anaconda3+PyTorch+PyCharm的安装教程图文详解
2020/04/03 Python
Django用内置方法实现简单搜索功能的方法
2020/12/18 Python
Mytheresa美国官网:德国知名的女性奢侈品电商
2017/05/27 全球购物
华三通信H3C面试题
2015/05/15 面试题
小学教师岗位职责
2013/11/25 职场文书
护理专业大学生自我推荐信
2014/01/25 职场文书
红旗团支部事迹材料
2014/01/27 职场文书
陈安之励志演讲稿
2014/08/21 职场文书
简单的离婚协议书范本
2014/11/16 职场文书
JS函数式编程实现XDM一
2022/06/16 Javascript
JS前端使用canvas实现物体的点选示例
2022/08/05 Javascript