当前位置:  开发笔记 > 编程语言 > 正文

Firefox onkeydown检测按键

如何解决《Firefoxonkeydown检测按键》经验,为你挑选了3个好方法。

从输入文本我需要调用一个函数来捕获onkeydown事件,我需要将一个参数传递给该事件,例如:

...

然后在该功能中我需要知道按下了什么键.我用

function TextOnKeyDown(prefix) {
    var key = event.keyCode; 
    ...
}

这就像IE中的魅力一样,但在Firefox中则不然.我已经读过,对于firefox,你必须将一个参数传递给处理程序然后用它来获取密钥,类似于:


...
function detectKey(e){
     var key = (document.all) ? e.keyCode : e.which; 
     ...    
} 

但我无法传递我的参数和firefox所需的事件参数.有什么建议?



1> mike nvck..:

我昨天写了这个,在FF和IE中工作=>

//execute this during initialization
document.onkeydown = function(event) {
    var holder;
    //IE uses this
    if(window.event) {
        holder = window.event.keyCode;
    }
    //FF uses this
    else {
        holder = event.which;
    } 
    keyz(holder);
}

function keyz(key) {
    if(key === /*desired code*/) {
        /*execute stuff*/
    }
}

你会想用[你的输入] .onkeydown替换document.onkeydown



2> 小智..:

我在firefox中使用它,它的工作原理:


然后是js funcion:

function isNumberKey(evt)
{
    var charCode = (evt.which) ? evt.which : evt.keyCode
    if(charCode==37||charCode==39||charCode==46)return true;
    if (charCode > 31 && (charCode < 48 || charCode > 57))
    return false;

    return true;
}



3> antonioh..:

所提出的解决方案都没有像我需要的那样工作,除了Firefox的必要"事件"参数之外还添加我自己的参数来获取keyCode.无论如何,帮助,谢谢你们.我为未来的读者提出了最终解决方案:

最后我只需要向调用者添加"event"参数:


和处理程序:

function TextOnKeyDown(prefix, evt) {    
   var key = (evt.which) ? evt.which : evt.keyCode;
...
}

不知怎的,它以前没用,我不知道为什么.

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有