`

屏蔽"Backspace"(退格)键后退功能

阅读更多
屏蔽"Backspace"(退格)键后退功能2008-01-17 16:18本来这个脚本不难,但是我接到的需求可不太容易实现

创建工单时,屏蔽"Backspace"键后退功能
需求描述: 创建工单时,光标在非文本框内,按"Backspace"键,整个页面会刷新,填写内容全部清空,应屏蔽此功能。

难点在于该页面并不是完全屏蔽掉退格键.而是有选择的屏蔽.

入下面图片中的页面



如果我把退格完全屏蔽掉的话.那用户输入时就不能删除错别字了,所以代码要复杂一点,要判断焦点的所在.

本来页面对象有个方法 hasFocus() , 这个本来应该挺好用的,但是在我的系统里这个方法无法识别.

算了,还有方法..就是判断当前对象是不是document的活动对象:var obj==document.activeElement

我怎么判断活动对象在哪个控件上呢?

没办法..遍历吧,每次按退格键都要遍历一次..除此外想不出别的办法了.,为了让它快一点.我只遍历FORM里的元素, 下面是我的脚本

<body onkeydown="backspace();">
      <form id="FORM_APPLAY" action="xxx">
        xxxxxxx
      </form>
</body>

<script language="JavaScript" type="text/JavaScript">
   //在申请工单时.屏蔽退格键返回上一次浏览页面功能
   function backspace(){
    if(event.keyCode!=8){
     event.returnValue=true;
     return;
    }
    else{
    //如果当前焦点在form里,退格键有效,否则无效
     if(activeElement()){
     //alert("焦点是否在form里: true ");
      event.returnValue=true;
     }else{
     //alert("焦点是否在form里: false ");
      event.returnValue=false;
     }
    }
   }
 
   function activeElement(){
    var forms = document.getElementById("FORM_APPLAY");
    if(forms!=null){
     if(children(forms))
      return true;
    }
     return false;
   }
 
   //迭代判断焦点所在
   function children(obj){
    if(obj==document.activeElement)
     return false;
    //如果有子元素
    if(obj.hasChildNodes()){       
     for(var i=0;i<obj.childNodes.length;i++){
        if(obj.childNodes[i]==document.activeElement&&obj.childNodes[i].tagName.toLowerCase()!="td"){
        if(obj.childNodes[i].type.toLowerCase()=="text"||obj.childNodes[i].tagName.toLowerCase()=="textarea"){
           return true;
        }
       
        }
            
      if(children(obj.childNodes[i]))
       return true;
     }
   
    } 
    return false;
   }

</script>

分享到:
评论

相关推荐

    屏蔽退格键后退网页功能

    当我们在jsp上有个只读文本框的时候,用户在文本框内点击BackSpace会后退网页,此js直接引用到jsp内就可以屏蔽退格键后退网页的功能,删除功能还在。经测试,谷歌,IE都可以用。

    js屏蔽退格键(backspace或者叫后退键与F5)

    我们在真实的项目开发中经常会使用JS 对键盘上的一些按键进行禁用,常见的比如说退格键(backspace/ 后退键),我在一个项目中就遇到过在页面编辑的时候禁用掉退格键,因为退格键会发生页面后退,这样编辑的内容都会...

    chrome52版本以下 屏蔽退格键 回退插件

    chrome52版本以下 屏蔽退格键 回退插件 backspacemeansbackspace V 1.2

    web 屏蔽BackSpace键实例代码

    例如,对于依赖Backspace键进行正常功能的页面(如文本编辑器),屏蔽Backspace可能会带来不便。因此,在实际应用中,开发者应谨慎考虑是否需要屏蔽Backspace键,以及何时启用或禁用这一行为,以确保用户体验的流畅...

    jQuery禁用键盘后退屏蔽F5刷新及禁用右键单击

    以下代码示例展示了如何屏蔽Alt+方向键(前进/后退)、退格键(Backspace)和F5键,以及Ctrl+R(刷新)组合键: ```javascript $(document).keydown(function(event){ // 屏蔽 Alt+ 方向键 ← // 屏蔽 Alt+ 方向...

    javascript禁用键盘功能键让右击及其他键无效.docx

    ### JavaScript禁用键盘功能键及鼠标操作 在Web开发中,有时为了保护网站内容或提供特定的用户体验,开发者可能会选择禁用浏览器的一些默认行为,比如禁用键盘上的某些功能键、鼠标右键点击等。下面将详细介绍如何...

Global site tag (gtag.js) - Google Analytics