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 相关文章推荐
Firefox中autocomplete=&quot;off&quot; 设置不起作用Bug的解决方法
Mar 25 Javascript
javascript 学习笔记(一)DOM基本操作
Apr 08 Javascript
Javascript操作cookie的函数代码
Oct 03 Javascript
javascript:void(0)的问题使用探讨
Apr 10 Javascript
JavaScript forEach()遍历函数使用及介绍
Jul 08 Javascript
jQuery动画效果相关方法实例分析
Dec 31 Javascript
jQuery使用正则表达式限制文本框只能输入数字
Jun 18 Javascript
requirejs + vue 项目搭建详解
Jun 16 Javascript
JS表单提交验证、input(type=number) 去三角 刷新验证码
Jun 21 Javascript
关于Angularjs中跨域设置白名单问题
Apr 17 Javascript
微信小程序使用template标签实现五星评分功能
Nov 03 Javascript
浅析JavaScript中的变量提升
Jun 01 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实现的在线人员函数库
2008/04/09 PHP
javascript,jquery闭包概念分析
2010/06/19 Javascript
Jquery中显示隐藏的实现代码分析
2011/07/26 Javascript
JSON+JavaScript处理JSON的简单例子
2013/03/20 Javascript
javascript修改IMG标签的src问题
2014/03/28 Javascript
js图片实时加载提供网页打开速度
2014/09/11 Javascript
通过JS动态创建一个html DOM元素并显示
2014/10/15 Javascript
JavaScript控制浏览器全屏及各种浏览器全屏模式的方法、属性和事件
2015/12/20 Javascript
JS简单获取当前年月日星期的方法示例
2017/02/07 Javascript
jQuery中layer分页器的使用
2017/03/13 Javascript
js轮播图的插件化封装详解
2017/07/17 Javascript
vue 巧用过渡效果(小结)
2018/09/22 Javascript
vue 公共列表选择组件,引用Vant-UI的样式方式
2020/11/02 Javascript
原生JavaScript实现进度条
2021/02/19 Javascript
[08:54]DOTA2-DPC中国联赛 正赛 Aster vs LBZS 选手采访
2021/03/11 DOTA
python开启多个子进程并行运行的方法
2015/04/18 Python
Python使用minidom读写xml的方法
2015/06/03 Python
Python实现将doc转化pdf格式文档的方法
2018/01/19 Python
python 3.3 下载固定链接文件并保存的方法
2018/12/18 Python
python json.loads兼容单引号数据的方法
2018/12/19 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
2019/01/17 Python
python pygame实现五子棋小游戏
2020/10/26 Python
python删除列表元素的三种方法(remove,pop,del)
2019/07/22 Python
Django对接支付宝实现支付宝充值金币功能示例
2019/12/17 Python
Python中的With语句的使用及原理
2020/07/29 Python
Python如何发送与接收大型数组
2020/08/07 Python
Belvilla德国:在线预订度假屋
2018/04/10 全球购物
一份Java笔试题
2012/02/21 面试题
团员的自我评价
2013/12/01 职场文书
大学生期末自我鉴定
2014/02/01 职场文书
学生会招新策划书
2014/02/14 职场文书
法制宣传月活动方案
2014/05/11 职场文书
暖通工程师岗位职责
2014/06/12 职场文书
志愿者工作心得体会
2016/01/15 职场文书
MongoDB数据库部署环境准备及使用介绍
2022/03/21 MongoDB
Win10 Anaconda安装python-pcl
2022/04/29 Servers