keydown没有在firefox中工作

时间:2012-02-06 06:00:12

标签: javascript asp.net firefox4

 <script>
        function MoveNext(e, obj) {

            if (!e) var e = window.event;

            if (e.keyCode) code = e.keyCode;

            else if (e.which) code = e.which;
            if (code == 13) {

                document.getElementById(obj).focus();

                return false;
            }
   </script>

以上代码在IE中工作但在mozilla中没有用

2 个答案:

答案 0 :(得分:0)

返回键的最佳代码究竟取决于您正在侦听的键盘事件(keydown,keyup,keypress)。对于按键,您可以这样做:

function MoveNext(e, obj) {
    e = e || window.event;
    var code = e.which || e.keyCode;
    if (code == 13) {
        document.getElementById(obj).focus();
    }
}

注意:我已删除您的本地变量e,因此它不会与参数e混淆,并且我已将code定义为您拥有的局部变量一个隐含的全局变量(从来不是一件好事)。

有关此处所述的跨浏览器密钥处理的更多信息:keycode and charcode

答案 1 :(得分:0)

更改

if (e.keyCode) code = e.keyCode;
else if (e.which) code = e.which;

code = (e.keyCode)? e.keyCode: e.charCode;

并确保在调用它时将事件传递给moveNext,因为只有在您从函数中明确发送事件时,firefox才会识别事件。

如果您正在执行keydown的对象是div,则将tabindex添加为0,以便它可以检索焦点。

<div id="mydiv" tabindex="0"></div>