有如下代码:if(document.addEventListener){
document.addEventListener("keydown",maskBackspace, true); //firefox
}else{
document.attachEvent("onkeydown",maskBackspace);  //ie
}function maskBackspace(event){
var event = event || window.event;  //标准化事件对象
var obj = event.target || event.srcElement; if(event.keyCode == 8){
                //如果是input跟textarea,回退键正常使用,否则回退键失效。
if(obj!=null && obj.tagName!=null && (obj.tagName.toLowerCase() == "input"  
           || obj.tagName.toLowerCase() == "textarea")){
event.keyCode = 8 ;
event.returnValue = true ;
if(Ext.getCmp(obj.id)){
if(Ext.getCmp(obj.id).readOnly) {
event.keyCode = 0;
event.returnValue = false ;
}
}
}else{
event.keyCode = 0;
event.returnValue = false ;
}
}
}在ie下测试成功,但是在ff下,keyCode是只读属性,测试失败。请问下各位高手,如何才能在ff下实现屏蔽backspace的功能呢?

解决方案 »

  1.   

    顺便问一下,
                event.returnValue = false ;
    它的作用是什么呢?测试的时候可以将 if(Ext.getCmp(obj.id)){
                    if(Ext.getCmp(obj.id).readOnly) {
                        event.keyCode = 0;
                        event.returnValue = false ;
                    }
                }
    这段删掉,它是在ext下才能运行
      

  2.   

    顺便问一下, 
                event.returnValue = false ; 
    就是让响应的事件不执行。
    默认是 event.returnValue = true ;执行
      

  3.   

    响应事件,指的是不是
    document.addEventListener("keydown",maskBackspace, true); //firefox
    中的这个keydown?
    那event.keyCode=0在这里的作用又是什么呢?
      

  4.   

    响应事件,指的是不是 
    document.addEventListener("keydown",maskBackspace, true); //firefox 
    中的这个keydown? 是的event.keyCode=0 应该是不做任何事情吧。
      

  5.   

    把设置event.keyCode = 的地方都去掉就行。利用event.returnValue 就可以达到目的
      

  6.   

    整了半天,终于解决了ff下对backspace的屏蔽功能,代码贴出如下,注意黑体字部分,希望对大家有帮助!
    if(document.addEventListener){
    document.addEventListener("keydown",maskBackspace, true);
    }else{
    document.attachEvent("onkeydown",maskBackspace);
    }function maskBackspace(event){
    var event = event || window.event;  //标准化事件对象
    var obj = event.target || event.srcElement;
    var keyCode = event.keyCode ? event.keyCode : event.which ?
    event.which : event.charCode;
    if(keyCode == 8){
    if(obj!=null && obj.tagName!=null && (obj.tagName.toLowerCase() == "input"  
               || obj.tagName.toLowerCase() == "textarea")){
    event.returnValue = true ;
    if(Ext.getCmp(obj.id)){
    if(Ext.getCmp(obj.id).readOnly) {
    if(window.event)
    event.returnValue = false ;  //or event.keyCode=0
    else
    event.preventDefault();   //for ff
    }
    }
    }else{
    if(window.event)
    event.returnValue = false ;   // or event.keyCode=0
    else
    event.preventDefault();    //for ff
    }
    }
    }
      

  7.   


    if(document.addEventListener){
        document.addEventListener("keydown",maskBackspace, true);
    }else{
        document.attachEvent("onkeydown",maskBackspace);
    }function maskBackspace(event){
        var event = event || window.event;  //标准化事件对象
        var obj = event.target || event.srcElement;
        var keyCode = event.keyCode ? event.keyCode : event.which ?
                event.which : event.charCode;
        if(keyCode == 8){
            if(obj!=null && obj.tagName!=null && (obj.tagName.toLowerCase() == "input"  
                   || obj.tagName.toLowerCase() == "textarea")){
                event.returnValue = true ;
                if(Ext.getCmp(obj.id)){
                    if(Ext.getCmp(obj.id).readOnly) {
                        if(window.event)
                            event.returnValue = false ;  //or event.keyCode=0
                        else
                            event.preventDefault();   //for ff
                    }
                }
            }else{
                if(window.event)
                    event.returnValue = false ;   // or event.keyCode=0
                else
                    event.preventDefault(); 
            }
        }
    }