【问题标题】:keydown not firing on divkeydown 没有在 div 上触发
【发布时间】:2014-11-11 20:00:22
【问题描述】:

我的按键有问题。当页面在 div“screenA”上时,用户有两个选项,按空格或“i”键。 “i”键显示警报,空格键显示 div screenTimer。当用户在 div screenTimer 上时,她应该能够按向右箭头键调用 startTesting() 以及控制台日志。

i 键和空格键有效,但右箭头键 (39) 不执行任何操作,也不显示控制台日志。

$(document).keydown( function(e)
            {
                if ( boolKeyDepressed )
                    return;
                else
                    boolKeyDepressed = true;

        var e = e || window.event;
                var ltr = e.keyCode ? e.keyCode : e.charCode;
                var trans = "";


                if ( ltr == 13 ) 
                {
                    event.preventDefault();
                }

                switch(ltr)
                {

                    case 73: // "i" key

                        if (!$('screenA').is(':visible')) {
                        alert("i key");
                        }   
                        break;
                    case 32: // space bar 

                        if (!$('screenA').is(':visible')) {

                        showDiv('screenTimer');
                        hideDiv("screenA");

                        }

                        break;

                    case 39: // right arrow key

                        if (!$('screenTimer').is(':visible')) {
                     console.log("timer");
                        startTesting();
                    }

                        break;


                }


        });

【问题讨论】:

    标签: jquery switch-statement keydown


    【解决方案1】:

    你必须使用 keypress 而不是 keydown,用 keypress 试试你的代码

    【讨论】:

    • 它仍然不起作用 =\ 只有前两种情况起作用,即 i 键和空格键。一旦我进入screenTimer,右箭头键就不会触发
    • startTesting() 函数在哪里,你说对了
    • 也可以试试 e.which 而不是 e.keycode,e.which 适用于所有浏览器
    猜你喜欢
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    相关资源
    最近更新 更多