JS屏蔽页面某些按键的响应

经常碰到这样的问题,页面上有个input控件,但是readonly属性为readonly,也就是只读的,当光标选中该控件时,无法输入任何内容,但是输入的按键其实被页面获取到了,会造成一个问题:

当在该控件输入回退按键(ESC)时,会导致页面直接返回上一个页面,因为页面响应了ESC的按键事件

因此,需要在页面加载时进行屏蔽(仅屏蔽当焦点在这些只读输入控件的时候的ESC按键事件)

代码如下:

<html>
 <head>
  <title>测试页面</title>
  <script language="javascript">
   document.οnkeydοwn=function(){
       alert(window.event.keyCode);
    if(window.event.keyCode == 8){
     alert(window.event.srcElement.tagName);
     if(event.srcElement.name == "inputbox"){
         alert("!");
      window.event.keyCode = 0;
      event.returnValue = false;
     }
    }
   }
  </script>
 </head>
 <body>
  <input name="inputbox" id="inputbox" readonly="readonly"/>
 </body>
</html>

当然,这里的判断条件如果改为下面这种,屏蔽所有只读输入栏的就更好了

if (
       (event.keyCode == 8)
       && ((event.srcElement.type != "text" && event.srcElement.type != "textarea" &&  event.srcElement.type != "password")
         ||  event.srcElement.readOnly == true
         )


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值