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 相关文章推荐
jMessageBox 基于jQuery的窗口插件
Dec 09 Javascript
Javascript学习笔记1 数据类型
Jan 11 Javascript
让ie运行js时提示允许阻止内容运行的解决方法
Oct 24 Javascript
网页中返回顶部代码(多种方法)另附注释说明
Apr 24 Javascript
jQuery如何取id有.的值一般的方法是取不到的
Apr 18 Javascript
JS控制输入框内字符串长度
May 21 Javascript
jQuery实现的数值范围range2dslider选取插件特效多款代码分享
Aug 27 Javascript
javascript html5摇一摇功能的实现
Apr 19 Javascript
解决vue-cli webpack打包开启Gzip 报错问题
Jul 24 Javascript
layui树形菜单动态遍历的例子
Sep 23 Javascript
VUE实现图片验证码功能
Nov 18 Javascript
浅谈js数组splice删除某个元素爬坑
Oct 14 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函数
2006/12/06 PHP
php 记录进行累加并显示总时长为秒的结果
2011/11/04 PHP
php中实现xml与mysql数据相互转换的方法
2014/12/25 PHP
简单解决新浪SAE无法上传文件的问题
2015/05/13 PHP
PHP命令Command模式用法实例分析
2018/08/08 PHP
PHP微信支付结果通知与回调策略分析
2019/01/10 PHP
Code: write(s,d) 输出连续字符串
2007/08/19 Javascript
跨域请求之jQuery的ajax jsonp的使用解惑
2011/10/09 Javascript
JQuery一种取同级值的方式(比如你在GridView中)
2012/03/15 Javascript
解析URI与URL之间的区别与联系
2013/11/22 Javascript
jQuery中关于ScrollableGridPlugin.js(固定表头)插件的使用逐步解析
2014/07/17 Javascript
理解javascript回调函数
2014/12/28 Javascript
jQuery中siblings()方法用法实例
2015/01/08 Javascript
js获取元素外链样式的方法
2015/01/27 Javascript
Javascript中的async awai的用法
2017/05/17 Javascript
Vue resource三种请求格式和万能测试地址
2018/09/26 Javascript
angular4笔记系列之内置指令小结
2018/11/09 Javascript
vue cli3.0 引入eslint 结合vscode使用
2019/05/27 Javascript
webpack打包html里面img后src为“[object Module]”问题
2019/12/22 Javascript
在Python中使用AOP实现Redis缓存示例
2017/07/11 Python
对Pycharm创建py文件时自定义头部模板的方法详解
2019/02/12 Python
Python SSL证书验证问题解决方案
2020/01/13 Python
python中threading和queue库实现多线程编程
2021/02/06 Python
matplotlib源码解析标题实现(窗口标题,标题,子图标题不同之间的差异)
2021/02/22 Python
CSS3教程(10):CSS3 HSL声明设置颜色
2009/04/02 HTML / CSS
五款漂亮的纯CSS3动画按钮的实例教程
2014/11/21 HTML / CSS
Html5 页面适配iPhoneX(就是那么简单)
2019/09/05 HTML / CSS
来自世界各地的优质葡萄酒:VineShop24
2018/07/09 全球购物
智能家居、吸尘器、滑板车、电动自行车网上购物:Geekmaxi
2021/01/18 全球购物
工程测量与监理专业应届生求职信
2013/11/27 职场文书
上课玩手机检讨书
2014/02/08 职场文书
家长写给孩子的评语
2014/04/18 职场文书
领导干部查摆“四风”问题自我剖析材料思想汇报
2014/10/05 职场文书
2015年电话销售工作总结范文
2015/04/20 职场文书
2015年信贷员工作总结
2015/04/28 职场文书
导游词之黄果树瀑布
2019/09/20 职场文书